2012-03-29 246 views
3

我需要使用Entity Framwork 4.x將存儲過程用於將數據返回到POCO對象的建議。我不想將數據從實體對象複製到POCO對象。我想執行一個存儲過程並將數據直接加載到我的POCO類中。實體框架存儲過程和POCO

有沒有辦法做到這一點?我是否需要某種類似於您在Nhibernate中使用的映射?如果是這樣,這個映射可以基於屬性嗎?

編輯:使用下面賈斯汀的幫助下,我發現,要做到這一點的方法是:

SqlParameter p1 = new SqlParameter("@p1", "xxxx"); 
SqlParameter p2 = new SqlParameter("@p2", "yyyy"); 

SqlParameter[] parameters = new SqlParameter[2]; 
parameters[0] = p1; 
parameters[1] = p2; 

returned = base.ExecuteStoreQuery<YourClass>("exec your_stored_proc_name @p1, @p2", parameters); 

回答

4

是的,你可以使用the generic version of ExecuteStoreQuery,一旦你get to the ObjectContext

var listOfType= ((IObjectContextAdapter)context).ObjectContext 
        .ExecuteStoreQuery<Type>("SPROCNAME"); 

Here is the MSDN sample code (just change the TSQL to a sproc)

And, here is one that shows how to deal with parameters

ne EF的WER版本有SqlQueryDbContext.Database to get the ObjectContext easier

var listOfType = context.Database.SqlQuery<Type>("SPROCNAME"); 
+1

@MystereMan更新,抱歉:) – 2012-03-29 18:01:33

+0

這似乎至少需要'類SqlQuery ( 「EXEC SPROCNAME」)'。如果你的sproc有參數,你也必須將它們包含在你的SQL語句中。 – xr280xr 2015-03-31 14:33:20