我正在使用ASP.NET MVC 3和EF 4.x
我有一个返回结果集的过程但是列没有修复(它可能返回25列或者可能是40或50)。
如何从Entity Framework调用此存储过程?
当我使用函数导入时,它会要求实体。但我不能选择它,因为没有一个列是固定的。
答案 0 :(得分:1)
实体框架不是正确的工具。它擅长静态定义的数据结构,而不是动态数据结构。
有更好的工具。我建议Dapper创建Marc Gravell。馅饼很容易。只需获取NuGet包并输入类似
的内容using Dapper;
using (var cnn = new SqlConnection(myConnectionString))
{
cnn.Open();
var p = new DynamicParameters();
p.Add("@params", "Id=21");
var results = cnn.Query(sql:"GetMyData",
param: p,
commandType: CommandType.StoredProcedure);
foreach(IDictionary<string, object> result in results)
{
// Do something here.
}
}
Query
是Dapper扩展方法,result
是DapperRow
,它是实现IDictionary<string, object>
的私有类,因此您只需将数据作为字典访问每条记录。
除了易于使用外,它也很快。