我正在使用EF从MS SQL中的存储过程中获取数据。存储过程正在返回表。 (列与我的对象中的属性具有相同的名称)
List<MyObject> result =
db.ExecuteStoreQuery<MyObject>("EXEC [dbo].myProcedure]").ToList();
如果没有实体框架,有没有办法做到这一点? (使用SqlCommand)
感谢。
答案 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
,那么它们就会被编入索引。