我正在使用 ASP.NET MVC 3 和 EF 4.x
我有一个返回结果集的过程,但列不固定(它可能返回 25 列,也可能是 40 或 50 列)。
如何从 Entity Framework 调用此存储过程?
当我使用函数导入时,它要求一个实体。但我无法选择它,因为没有任何列是固定的。
最佳答案
Entity Framework 不是适合此目的的工具。它擅长静态定义的数据结构,而不擅长动态数据结构。
有更好的工具可以做到这一点。我会推荐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>
的私有(private)类,因此您可以将数据作为每条记录的字典进行访问。
除了易于使用之外,它的速度也快如闪电。
关于asp.net-mvc - 从返回具有可变列的表的 Entity Framework 调用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21777421/