我想創建一個簡單的好友列表,每行有兩個ID的(用戶ID和朋友id),都引用「ID」,在相應的用戶配置文件字段在EF中的朋友列表最簡單的方法是什麼?
| relationId |用戶id | friendId |
讓用戶成爲朋友,如果雙方都向友人發送友誼請求。例如:
| 1 | 2 | 4 |
| 1 | 4 | 2 | // ID爲2和4的用戶是朋友
到目前爲止,設置外鍵對我來說很簡單。當我必須將兩個外鍵設置到同一個表時,事情會變得更加困難。我得到了不同的錯誤,我期望解決這個問題,然後重新調整我的代碼,最後我覺得我太過於複雜了。
用戶配置模式:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
}
朋友型號:
[Table("Friends")]
public class Friends
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int RelationId { get; set; }
public int UserId { get; set; }
[ForeignKey("UserId")]
public UserProfile User { get; set; } // works with one foreign key
public int FriendId { get; set; }
[ForeignKey("FriendId")]
public UserProfile Friend { get; set; } // doesn't work when I add this one
}
這使我有以下異常:
介紹上表中 '朋友' 可能FOREIGN KEY約束 'Friends_User'導致週期或多個級聯路徑。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY約束。
我已經搜索了類似的問題,我看到了很多外鍵的例子,但是,我無法找到任何兩個字段鏈接到同一個表的示例。
這正是我一直在尋找的。猜猜這不能簡單地與EF ..我提到它的作品像一個魅力? –