这可能是一个简单的答案,但我看不到如何使用EF CTP5执行存储过程.
在Entity Framework 4.0中,我们这样做了:
ExecuteFunction("ContainerName.StoredProcName", new ObjectParameter("Id", id)).
这是一种方法ObjectContext.
但是DbContext没有这样的方法.
我们如何调用存储过程?EF CTP5不支持吗?
编辑:
我找到了这个帖子,说明你需要这样做:
var people = context.People.SqlQuery("EXECUTE [dbo].[GetAllPeople]");
Run Code Online (Sandbox Code Playgroud)
这引起了一些担忧:
1)您现在在集合上调用存储的程序,而不是上下文.存储过程应该在上下文中可用,而不是与特定实体集相关联.就像它们在SQL Server中的"数据库"下,而不是在"表"下.
2)复杂类型怎么样?我之前有一个从存储过程返回的复杂类型.但现在看起来好像你必须直接映射到一个实体?这没有任何意义.我有很多存储过程返回一个不是由ObjectSet/DBSet直接表示的类型,我无法看到我如何能够完成.
希望有人可以为我清除这一点,因为据我所知,到目前为止,我将无法升级到CTP5.
sql-server stored-procedures entity-framework code-first entity-framework-ctp5