我需要有关使用Entity Framwork 4.x的存储过程来将数据返回到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);
答案 0 :(得分: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
较新版本的EF有SqlQuery和DbContext.Database to get the ObjectContext easier:
var listOfType = context.Database.SqlQuery<Type>("SPROCNAME");