【发布时间】:2017-10-23 15:54:44
【问题描述】:
解决此问题的最简单、最简单的方法是什么。我有一个复杂的存储过程,它返回两个临时表。
如何让这些表格显示在实体框架 edmx 文件中?或者这样的事情是不可能的?最终结果我需要两个临时表都在自己的模型中。 SP 接受 2 个参数作为输入。
目前我正在使用这种方法。但只有一张表返回,我也没有得到列名。它们仅作为数组对象返回。我必须手动将其映射到一个不理想、乏味和 hacky 的模型。
SqlCommand command = new SqlCommand("returnTwoTablesSP", connection);
command.CommandType = System.Data.CommandType.StoredProcedure;
command.Parameters.AddWithValue("@DataDateFrom", string.Empty);
command.Parameters.AddWithValue("@DataDateTo", string.Empty);
List<TwoTableModel> tableList = new List<string>();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
object[] values = new object[reader.FieldCount];
reader.GetValues(values); // This returns the columns but just from
the 1st temp table only.
var model = new TwoTableModel()
{
UserId = values[0].ToString(), //Each column field
Name = values[1].ToString(),
};
tableList.Add(model);
}
return tableList;
【问题讨论】:
-
你能显示存储过程吗?
-
SP 太长了,我发布它可能会遇到麻烦,但它会返回两个表。一个包含名称、出生日期等的标题表。第二个是由 userid 连接的详细信息表,其中包含有关人员的更多详细信息。每个中的数据都是从数据库中的各种表中获取的
-
读取下一个数据集。
reader.NextResult(); -
NextResult 确实有效,但是我不知道如何直接将结果与我的 Table1Model 映射。由于返回的结果是来自不同表的列的集合,我如何从中创建数据库模型?目前,我手动创建了一个表 1 和一个表 2 模型,它们代表将从 SP 返回的列。共有 75 列。如果我逐行手动设置模型中的每一列,它看起来很俗气。有什么方法可以将 sp 中的列映射到 Table1.cs 和 Table2.cs 的属性中
标签: c# entity-framework stored-procedures