我有三个表,即:Person(PersonID(INT),Personname(varchar)),Items(ItemID(INT),Itemname(varchar))和PersonItemAssoc(PersonItemAssoc(Int),PersonID(INT),ItemID(INT) ))。
PersonItemAssoc为personid和Itemid提供了多对多的关联。
我想知道如果我传递itemId,我应该在PersonItemAssoc表中得到所有没有关联的PersonId。
我正在使用Entity Framework 4.0 请提出实施此方法的方法。
答案 0 :(得分:2)
var peopleWithoutItem = from p in Context.Person
where !p.PersonItems.Any(pi => pi.Item.ItemId == someItemId);
select p;
请注意,如果您摆脱PersonItemAssoc(int)
并使PersonItemAssoc
PK成为PersonID
和ItemID
的复合,那么EF可以将人物作为多个项目很多,而不是两个一对多的关系。