用户好友关系
一对多的关系我找到答案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