假设在 SQL 中,我有两个表:
在我的 EDMX 中,我有一个用于 SPROC 的函数导入,它返回与表 A 的实体类型相对应的列。
如果在 SPROC 中,我从表 B 中选择了相应的数据,那么当我请求 ABName 时,Entity Framework (4.1) 是否会知道在稍后对数据库进行延迟提取的情况下关联该数据?
假设在 SQL 中,我有两个表:
在我的 EDMX 中,我有一个用于 SPROC 的函数导入,它返回与表 A 的实体类型相对应的列。
如果在 SPROC 中,我从表 B 中选择了相应的数据,那么当我请求 ABName 时,Entity Framework (4.1) 是否会知道在稍后对数据库进行延迟提取的情况下关联该数据?
.NET 4.0 中的函数导入只能从单个表中选择数据。您需要两个单独的存储过程来加载主体实体和依赖实体。仅通过某些扩展支持 EF 4.0 中的多个结果集。
.NET 4.5 还支持具有多个结果集的存储过程,但至少在 VS 2012 RTM 中,设计器不支持此功能(您必须在 EDMX 的 XML 中手动完成)。如果它在 VS 2012 年 11 月更新中得到修复,我还没有尝试过。
一旦您为主体表和从属表返回结果集的存储过程,EF 将确保正确设置关系,并且您始终可以关闭延迟加载以确保没有对数据库的其他查询。