让我们说在SQL中,我有两个表:
在我的EDMX中,我有一个SPROC的函数导入,它返回对应于表A的实体类型的列。
如果在SPROC中,我从表B中选择相应的数据,当我请求A.B.Name时,实体框架(4.1)是否知道关联该数据而不对数据库进行延迟提取?
答案 0 :(得分:1)
.NET 4.0中的函数导入只能从单个表中选择数据。您需要两个单独的存储过程来加载主体和从属实体。 EF 4.0中的多个结果集仅通过some extensions支持。
.NET 4.5也supports stored procedures with multiple result sets但至少在VS 2012 RTM中,设计器不支持此功能(您必须在EDMX的XML中手动执行此功能)。如果它在VS 2012年11月更新中得到修复,我还没有尝试。
一旦你有存储过程返回主表和从属表的结果集,EF将确保正确设置关系,你可以随时关闭延迟加载以确保没有对数据库的其他查询