实体框架存储过程和POCO

时间:2012-03-29 17:30:11

标签: .net stored-procedures entity poco

我需要有关使用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);

1 个答案:

答案 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有SqlQueryDbContext.Database to get the ObjectContext easier

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