比较SQL表和使用Entity Framework获取值

时间:2010-07-21 15:41:35

标签: c# entity-framework-4

我有三个表,即: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 请提出实施此方法的方法。

1 个答案:

答案 0 :(得分:2)

var peopleWithoutItem = from p in Context.Person
                        where !p.PersonItems.Any(pi => pi.Item.ItemId == someItemId);
                        select p;

请注意,如果您摆脱PersonItemAssoc(int)并使PersonItemAssoc PK成为PersonIDItemID的复合,那么EF可以将人物作为多个项目很多,而不是两个一对多的关系。