这可能是一个简单的答案,但我不知道如何在EF CTP5中执行存储过程。
在Entity Framework 4.0中,我们使用以下代码来实现:
```ExecuteFunction("ContainerName.StoredProcName", new ObjectParameter("Id", id))```
这是ObjectContext上的一个方法。
但是DbContext没有这样的方法。
我们该怎么调用存储过程呢?EF CTP5不支持吗?
编辑:我在这个帖子中找到了此操作步骤:this thread。
这引发了一些担忧:
1)现在你是在set上调用存储过程,而不是在context中。存储过程应该在整个上下文中都可用,而不是绑定到特定的实体集。就像在 SQL Server 中它们在“数据库”下面,而不是在“表”下面一样。
2)那么复杂类型怎么办?我以前有一个从存储过程返回的复杂类型。但现在看起来你必须直接映射到一个实体?这没有任何意义。我有很多存储过程返回的类型并非直接由 ObjectSet/DBSet 表示,我无法想象如何将它们移植过来。
希望有人能为我解决这个问题,因为从我目前的理解来看,我将无法升级到 CTP5。
在Entity Framework 4.0中,我们使用以下代码来实现:
```ExecuteFunction("ContainerName.StoredProcName", new ObjectParameter("Id", id))```
这是ObjectContext上的一个方法。
但是DbContext没有这样的方法。
我们该怎么调用存储过程呢?EF CTP5不支持吗?
编辑:我在这个帖子中找到了此操作步骤:this thread。
var people = context.People.SqlQuery("EXECUTE [dbo].[GetAllPeople]");
这引发了一些担忧:
1)现在你是在set上调用存储过程,而不是在context中。存储过程应该在整个上下文中都可用,而不是绑定到特定的实体集。就像在 SQL Server 中它们在“数据库”下面,而不是在“表”下面一样。
2)那么复杂类型怎么办?我以前有一个从存储过程返回的复杂类型。但现在看起来你必须直接映射到一个实体?这没有任何意义。我有很多存储过程返回的类型并非直接由 ObjectSet/DBSet 表示,我无法想象如何将它们移植过来。
希望有人能为我解决这个问题,因为从我目前的理解来看,我将无法升级到 CTP5。