用戶好友關係
一對多的關係我找到答案EF核心 - 許多對一類
Entity Framework Core: many-to-many relationship with same entity 和嘗試這樣的。
實體來說:
public class User
{
public int UserId { get; set; }
public virtual ICollection<Friend> Friends { get; set; }
}
public class Friend
{
public int MainUserId { get; set; }
public User ManUser { get; set; }
public int FriendUserId { get; set; }
public User FriendUser { get; set; }
}
流利的API:
modelBuilder.Entity<Friend>()
.HasKey(f => new { f.MainUserId, f.FriendUserId });
modelBuilder.Entity<Friend>()
.HasOne(f => f.ManUser)
.WithMany(mu => mu.Friends)
.HasForeignKey(f => f.MainUserId);
modelBuilder.Entity<Friend>()
.HasOne(f => f.FriendUser)
.WithMany(mu => mu.Friends)
.HasForeignKey(f => f.FriendUserId);
當我加入遷移,該錯誤信息是
無法創建 'User.Friends' 和'之間的關係Friend.FriendUser',因爲'User.Friends'和'Friend.ManUser'之間已經存在關係。 導航屬性只能參與單個關係。
我該怎麼辦?或者我應該創建一個Entity FriendEntity:User?
感謝,離開WithMany似乎已經解決了這個問題對我來說。 –
嘗試這樣做會讓我在數據庫中留下額外的不必要的外鍵關係(我有三個,而不是兩個,其中一個是多餘的,但名稱不同)。爲了解決這個問題,我給WithMany()調用重新添加了一個參數:modelBuilder.Entity() .HasOne(f => f.FriendUser) .WithMany(mu => mu.MainUserFriends) 。 HasForeignKey(f => f.FriendUserId); –
BernardV