【发布时间】:2012-12-03 06:21:09
【问题描述】:
假设在 SQL 中,我有两个表:
在我的 EDMX 中,我有一个用于 SPROC 的函数导入,它返回与表 A 的实体类型相对应的列。
如果在 SPROC 中,我从表 B 中选择相应的数据,当我请求 A.B.Name 时,Entity Framework (4.1) 是否会知道关联该数据而无需对数据库进行延迟提取?
【问题讨论】:
标签: .net entity-framework stored-procedures edmx
假设在 SQL 中,我有两个表:
在我的 EDMX 中,我有一个用于 SPROC 的函数导入,它返回与表 A 的实体类型相对应的列。
如果在 SPROC 中,我从表 B 中选择相应的数据,当我请求 A.B.Name 时,Entity Framework (4.1) 是否会知道关联该数据而无需对数据库进行延迟提取?
【问题讨论】:
标签: .net entity-framework stored-procedures edmx
.NET 4.0 中的函数导入只能从单个表中选择数据。您需要两个单独的存储过程来加载主体实体和依赖实体。仅通过 some extensions 支持 EF 4.0 中的多个结果集。
.NET 4.5 也是supports stored procedures with multiple result sets,但至少在 VS 2012 RTM 中,设计器不支持此功能(您必须在 EDMX 的 XML 中手动完成)。如果它在 VS 2012 年 11 月更新中得到修复,我还没有尝试过。
一旦您为主体表和从属表返回结果集的存储过程,EF 将确保正确设置关系,并且您始终可以关闭延迟加载以确保没有对数据库的其他查询.
【讨论】: