asp.net-mvc - 从返回具有可变列的表的 Entity Framework 调用存储过程

标签 asp.net-mvc entity-framework

我正在使用 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 扩展方法,resultDapperRow ,这是一个实现 IDictionary<string, object> 的私有(private)类,因此您可以将数据作为每条记录的字典进行访问。

除了易于使用之外,它的速度也快如闪电。

关于asp.net-mvc - 从返回具有可变列的表的 Entity Framework 调用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21777421/

相关文章:

c# - ASP.NET MVC 5 ApplicationUser 作为外键

c# - ASP.NET MVC - 在 Html.ActionLink routeValues 中传递模型时遇到问题

c# - 使用 UnitofWork 模式的 Rhino 模拟 Entity Framework 不起作用

entity-framework - 验证复选框 - 前端 MVC3

c# - 调试本地 IIS Web 服务器上托管的 ASP.NET MVC3 应用程序

javascript - 使用 JQuery Ajax 将 Javascript 数组传递给 Controller

c# - 使用 Entity Framework 插入记录时出错

c# - 如何使用具有数据库优先方法的 DbModelBuilder 来实现软删除

c# - Entity Framework 不会保存关系

asp.net-mvc - 为什么 DisplayFor 不向 Action 方法发布值?