1

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

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

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

谢谢。

4

1 回答 1

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,那么它们将被索引。

于 2013-05-15T14:49:42.370 回答