如何将存储过程的结果映射到对象

时间:2013-05-15 14:41:08

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

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

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

如果没有实体框架,有没有办法做到这一点? (使用SqlCommand)

感谢。

1 个答案:

答案 0 :(得分:2)

当然,你可以像这样使用基本的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,那么它们就会被编入索引。