我有4个实体,零售商,商店,集团,用户
每个零售商可以有许多商店和许多用户,用户只能是一个组的一部分,并且组中有许多商店,一个商店也可以在多个组中。出于这个原因,我有一个名为storesingroups的连接表。商店和用户将RetailerId作为外键。在EF模型中还有其他表链接,例如每个商店的用户详细信息和日志等。
我想要做的是返回链接到某个用户名的所有组,但只返回组详细信息和该组中的任何商店,链接到我不需要的商店实体的任何其他表。
我已经搞砸了许多不同的查询来尝试这样做,最接近下面,但我相信有更好的方法。该代码也导致内存不足异常,所以我知道某些地方是不对的
var results1 = (from g in db.Groups
from gs in db.StoresInGroups
from s in db.Stores
// from r in db.Retailers
from u in db.UserProfileEFs
where s.RetailerRetailerId == u.RetailerId
where g.GroupId == gs.GroupId
where gs.StoreId == s.StoreId
where u.UserName == this.User.Identity.Name
where g.GroupId == u.GroupId
select new { Groups = g}).ToList();
修改
好,所以设法通过此查询获得我需要的结果:
var results2 = (from g in db.Groups
join u in db.UserProfileEFs on g equals u.Group where u.UserName == this.User.Identity.Name
select new { Group = g });
我现在需要做的是更改投影,因为它当前正在返回用户配置文件以及组中的存储,如何让查询不返回用户配置文件?