2009-07-02 85 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