【问题标题】:How to map result from stored procedure to object如何将结果从存储过程映射到对象
【发布时间】:2013-05-15 14:41:08
【问题描述】:

我正在使用 EF 从 MS SQL 中的存储过程中获取数据。存储过程正在返回表。 (列与我的对象中的属性名称相同)

List<MyObject> result = 
              db.ExecuteStoreQuery<MyObject>("EXEC [dbo].myProcedure]").ToList();

有没有办法在没有实体框架的情况下做到这一点? (使用 SqlCommand)

谢谢。

【问题讨论】:

  • 您将使用 ADO.NET 并将其执行到 DataReader 中,然后将其映射到对象。

标签: c# .net sql-server entity-framework stored-procedures


【解决方案1】:

当然,您可以像这样使用基本的 ADO.NET:

var list = new List<MyObject>();
using (SqlConnection c = new SqlConnection("your connection string"))
{
    var cmd = new SqlCommand("EXEC [dbo].myProcedure", c);
    cmd.CommandType = CommandType.StoredProcedure;
    using (SqlDataReader sdr = cmd.ExecuteReader())
    {
        while (sdr.Read())
        {
            var o = new MyObject
            {
                Property1 = sdr.GetString(0),
                Property2 = sdr.GetInt32(1),
                etc...
            }
            list.Add(o);
        }
    }
}

现在请记住,SqlDataReader 通过索引获取值,所以如果您的 SELECT 列表看起来像这样,Property1, Property3, Property2,那么它们将被索引。

【讨论】:

  • 谢谢,你能推荐一些自动映射器吗?或者我应该以“硬编码”的方式将 SqlDataReder 映射到 MyObject 中?
  • @Chatumbabub,我建议您将数据访问权限切换到 Dapper,因为您有一定的灵活性。它精简、快速,并且会自动将对象与查询进行映射。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 2014-07-01
  • 1970-01-01
相关资源
最近更新 更多