这可能是一个简单的答案,但我看不到如何使用 EF CTP5 执行存储过程。
在实体框架 4.0 中,我们这样做了:
ExecuteFunction("ContainerName.StoredProcName", new ObjectParameter("Id", id))
.
这是一个关于ObjectContext
.
But DbContext
没有这样的方法。
我们如何调用存储过程? EF CTP5 不支持吗?
EDIT:
I found 这个线程,其中指出您需要执行此操作:
var people = context.People.SqlQuery("EXECUTE [dbo].[GetAllPeople]");
这引起了一些担忧:
1) 您现在正在调用存储过程set,不是context。存储过程应该在上下文范围内可用,而不是绑定到特定的实体集。就像它们在 SQL Server 中的“数据库”下,而不是在“表”下一样。
2)那又怎么样复杂类型?我以前有一个从存储过程返回的复杂类型。但现在,看起来好像你必须直接映射到一个实体?这没有任何意义。我有许多存储过程返回一个不直接由 ObjectSet/DBSet 表示的类型,我不知道如何将其拉过来。
希望有人能为我解决这个问题,因为据我所知,我将无法升级到 CTP5。
您可以像这样执行数据库范围的sql语句
using(var context = new MyContext())
{
// custum sql statement
var c = context.Database.SqlQuery<int>("SELECT COUNT(*) FROM Employees");
// returned entity type doesn't have to be represented by ObjectSet/DBSet
var e = context.Database.SqlQuery<Employee>("SELECT * FROM Employees");
// stored procedure
var q = context.Database.SqlQuery<Employee>("GetEmployees");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)