EF查询帮助。使用interhited类型和自引用的困难查询

时间:2010-09-23 00:02:56

标签: c# entity-framework-4

我还是EF的新手,我已经找到了一些基本的查询。我很难接受我试图实现的一件更困难的事情。

我有4个实体 用户,租户,建筑,公寓

租户继承自用户

此时,非租户的用户可以被视为房东。

用户(房东)有一对多建筑物

建筑物有一到多个公寓

公寓有一对多租户(在任何时间都有一个活动)

我正在试图弄清楚如何创建一个EF查询,它将为我提供给定用户(房东)的租户列表。

给我我想要的SQL是:

SELECT u2.User_ID AS TenantUser_ID, u2.UserName  
FROM Users u  
LEFT JOIN rt_UserBuilding ub ON u.User_ID = ub.User_ID  
LEFT JOIN Buildings b ON ub.Building_ID = b.Building_ID  
LEFT JOIN Apartments a ON a.Building_ID  = b.Building_ID  
LEFT JOIN Tenants t ON a.Apartment_ID = t.Apartment_ID  
LEFT JOIN Users u2 ON t.User_ID = u2.User_ID  
WHERE u.User_ID = 1 AND t.User_ID IS NOT NULL 

1 个答案:

答案 0 :(得分:0)

假设您的Building班级有财产

User Landlord

最简单的方法是:

context.Tenants.Where(tenant => tenant.
                              Apartment.
                              Building.
                              Landlord.Id == yourLandlord.Id
                   ).ToList();