【发布时间】:2011-03-06 16:01:54
【问题描述】:
我的 Person 实体与 Person_Addresses 有 1 : N 的关系(字段:PersonID、AddressID、ValidFrom)。我想获取所有Person 记录和关联的Person_Addresses,只有最新的ValidFrom。我应该如何使用 ObjectQuery 或 IQueryable 来做到这一点?
编辑:
我提到了ObjectQuery 和IQueryable,因为我想有一个使用扩展方法的解决方案(我认为,它是如何被调用的)。另外我忘了提到我正在使用Entity Framework 来生成实体。我想得到一个 person 对象,它的 person_adress 成员急切地加载。
以下是实体结构: 个人成员:int id, string firstname, string lastname, Partner_Address partneradress
Person_Address 成员:int personid、int adressid、date validfrom
【问题讨论】:
-
看起来很复杂,但应该是吗?生成的 SQL 应如下所示: SELECT [Id] ,[Firstname] ,[Lastname] ,prt.AdressID FROM [Person] p CROSS APPLY ( SELECT TOP(1) [PersonId],[AdressId],[ValidFrom] FROM [ Person_Addresses] pa WHERE p.[Id] = pa.[PersonId] ORDER BY [ValidFrom] DESC ) prt
标签: linq-to-entities objectquery