实体框架:对链接表/多对多关系执行查询

时间:2009-07-02 13:11:29

标签: entity-framework linq-to-entities entity

我正在尝试使用linq到实体执行查询,实体/表在更新之前不包含相同的值。

数据库的结构如下:

Users             User_IPAddresses          IPAddresses
-----             ----------------          -----------
UserID   >------  UserID           ------<  IPAddressID
User              IPAddressID               Address

因此,实体对象的结构如下

UserSet          IPAddressSet
-------  >-----< ------------
User             IPAddress

所有ID字段都是主键,因此链接表(User_IPAddresses)必须包含唯一的行。

我遇到的问题是我无法理解如何检查实体,以便在更新之前不违反User_IPAddresses表上的唯一行约束。

那里的EF大师可以帮助我吗?

1 个答案:

答案 0 :(得分:4)

//returns true if pair exists
public bool CheckIfUserIPPairExists(int ipID, int userID)
{

   bool exists 
      = db.UserSet.Any(user=>user.UserID==userID 
                             && user.IPAddress.Any(ip=>ip.IPAddressID == ipID));
   return exists;
}