Asp.net mvc 从返回具有可变列的表的实体框架调用存储过程
我正在使用ASP.NETMVC3和EF4.x 我有一个过程返回一个结果集,但列不是固定的(它可能返回25列,也可能是40或50列) 如何从实体框架调用此存储过程Asp.net mvc 从返回具有可变列的表的实体框架调用存储过程,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我正在使用ASP.NETMVC3和EF4.x 我有一个过程返回一个结果集,但列不是固定的(它可能返回25列,也可能是40或50列) 如何从实体框架调用此存储过程 当我使用函数import时,它要求一个实体。但是我不能选择它,因为没有一列是固定的 实体框架不是用于此目的的合适工具。它擅长静态定义的数据结构,而不擅长动态定义的数据结构 这方面有更好的工具。我会推荐,由。这很容易。只需获取NuGet包并键入以下内容 using Dapper; using (var cnn = new SqlConn
当我使用函数import时,它要求一个实体。但是我不能选择它,因为没有一列是固定的 实体框架不是用于此目的的合适工具。它擅长静态定义的数据结构,而不擅长动态定义的数据结构 这方面有更好的工具。我会推荐,由。这很容易。只需获取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.
}
}
使用简洁;
使用(var cnn=newsqlconnection(myConnectionString))
{
cnn.Open();
var p=新的动态参数();
p、 添加(“@params”,“Id=21”);
var results=cnn.Query(sql:“GetMyData”,
参数:p,
commandType:commandType.StoredProcess);
foreach(结果中的索引结果)
{
//在这里做点什么。
}
}
Query
是一个简洁的扩展方法,result
是一个dapperow
,它是一个实现IDictionary
的私有类,因此您可以将数据作为每个记录的字典进行访问
除了易于使用之外,它的速度也非常快。尝试创建一个实体,该实体包含所有可能返回的列,并且包含所有非必需的字段。导入时使用该实体,该实体应能正常工作。如何使用此返回的数据创建新对象?你会通过计算列数来选择正确的实体吗?嗯,我不明白为什么有人会投反对票。是因为我没有逐字回答这个问题吗?嗯,EF没有办法做到这一点。