在我的应用程序中,我管理分配给用户的人员,关联的类型是多对多,因为可以将一个人分配给多个用户。所以我有以下表格。
用户表:
用户ID
人员表:
PersonID
(由实体框架管理的联盟表,从Linq查询中看不到)
PersonApplicationUser表:
用户名
是PersonID
我想检索未分配给任何用户的一组人员。到目前为止,我可以通过这种方式获得未分配给当前登录用户的人员集
var query = db.Persons.Except(user.Persons);
不幸的是,它会检索分配给其他用户的人员,这是不正确的,我认为除了是要走的路,但需要建议。
编辑: 我发现的主要困难是我无法从代码中访问联合表PersonApplicationUser。
答案 0 :(得分:0)
您正在寻找:
db.Persons.Where(p => !p.Users.Any())
答案 1 :(得分:0)
试试这个:
db.Persons.Where(p => p.Users.Count() == 0);
答案 2 :(得分:0)
实体框架意识到关系就像集合一样,因此您可以执行集合操作,EF会将它们转换为相关的sql。
你想要的是这样的:
var query = from p in db.Persons
where !p.Users.Any()
select p;
或者在方法语法中:
var query = db.Persons.Where(p => !p.Users.Any());