2012-03-29 143 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