我正在使用 EF 从 MS SQL 中的存储过程中获取数据。存储过程正在返回表。(列与我的对象中的属性具有相同的名称)
List<MyObject> result =
db.ExecuteStoreQuery<MyObject>("EXEC [dbo].myProcedure]").ToList();
有没有办法在没有实体框架的情况下做到这一点?(使用 SqlCommand)
谢谢。
我正在使用 EF 从 MS SQL 中的存储过程中获取数据。存储过程正在返回表。(列与我的对象中的属性具有相同的名称)
List<MyObject> result =
db.ExecuteStoreQuery<MyObject>("EXEC [dbo].myProcedure]").ToList();
有没有办法在没有实体框架的情况下做到这一点?(使用 SqlCommand)
谢谢。
当然,您可以像这样使用基本的 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
,那么它们将被索引。