实体框架将相关表排除在哪里

时间:2013-07-09 13:45:27

标签: linq entity entity-framework-5

我有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 });

我现在需要做的是更改投影,因为它当前正在返回用户配置文件以及组中的存储,如何让查询不返回用户配置文件?

0 个答案:

没有答案