2009-07-02 34 views
3

我试图执行一个查询使用linq实体到一个实体/表不包含相同的值之前,我更新它。实体框架:在链接表/多对多关系上执行查询

数据库的结构如下:

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

所以,该实体对象的结构如下

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

所有ID字段是主键,所以链路表(User_IPAddresses)必须包含唯一的行。

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

任何EF大师可以帮助我吗?

回答

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; 
} 
+1

T你是个天才,谢谢 – Calanus 2009-07-02 21:45:33