我正在使用EF從MS SQL中的存儲過程中獲取數據。存儲過程正在返回表。 (列與我的對象中的屬性名稱相同)如何將存儲過程的結果映射到對象
List<MyObject> result =
db.ExecuteStoreQuery<MyObject>("EXEC [dbo].myProcedure]").ToList();
有沒有辦法在沒有Entity Framework的情況下做到這一點? (用SqlCommand)
謝謝。
我正在使用EF從MS SQL中的存儲過程中獲取數據。存儲過程正在返回表。 (列與我的對象中的屬性名稱相同)如何將存儲過程的結果映射到對象
List<MyObject> result =
db.ExecuteStoreQuery<MyObject>("EXEC [dbo].myProcedure]").ToList();
有沒有辦法在沒有Entity Framework的情況下做到這一點? (用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
,那麼他們將是索引如此。
謝謝,你還可以推薦一些automapper嗎?或者我應該以「硬編碼」的方式將SqlDataReder映射到MyObject中? – Chatumbabub
@Chatumbabub,因爲您有一定的靈活性,所以我建議您將您的數據訪問切換到[Dapper](http://code.google.com/p/dapper-dot-net/)。它流線型,快速,並將自動映射對象與查詢。 –
謝謝,我會盡力的。 – Chatumbabub
您將使用ADO.NET並將其執行到DataReader中,然後將其映射到該對象。 – AliK