实体链接EF4

本文关键字:EF4 链接 实体 | 更新日期: 2023-09-27 18:05:33

我有一个包含name, descusers(属于组)集合的Groups域模型

我正在尝试获取特定用户所属的所有组。这是我的LinQ语句:

var results = from p in AuthorizationService.UnitOfWork.Groups.FindAll()
                          where
                              (p.Users != null && p.Users.Select(u => u.Id).Contains(CurrentUser.Id))
                          select p.Name;

当我尝试执行查询

时,我得到以下错误
Cannot compare elements of type 'System.Collections.Generic.ICollection`1'. Only primitive types (such as Int32, String, and Guid) and entity types are supported.

任何帮助都是非常感激的。

实体链接EF4

删除null测试的用户对象,无论如何它是延迟加载,是你的用户虚拟吗?如果是,它是惰性加载的,可以删除空测试,然后

var results = 
from p in AuthorizationService.UnitOfWork.Groups.FindAll() 
where 
     p.Users.Any(u => u.Id == CurrentUser.Id)
select p.Name;

你就不能走相反的路吗?

var results = AuthorizationService.UnitOfWork.Users.Include("Groups").First(u => u.ID == CurrentUser.Id).Select(u => u.Groups);