【发布时间】:2018-10-23 10:14:54
【问题描述】:
我有一个名为User 的表,它继承了IdentityUser 的属性,在该表中我添加了对需要存储所有用户友谊的UserFriendship 表的引用:
public class User : IdentityUser
{
public string FirstName { get; set; }
public DateTime BirthDate { get; set; }
public virtual ICollection<UserFriendship> UserFriendship { get; set; }
}
本质上UserFriendship包含两个用户,他们是有共同友谊的人,这是模型定义:
public class UserFriendship
{
public int Id { get; set; }
[Key, ForeignKey("UserA")]
public string UserAId { get; set; }
public User UserA { get; set; }
[Key, ForeignKey("UserB")]
public string UserBId { get; set; }
public User UserB { get; set; }
[Required]
public DateTime DateTime { get; set; }
}
我定义了UserA 和UserB,它们是User 中的两个FK,它们包含在AspNetUsers 表中。
现在在FluentAPI 中我声明了以下内容:
builder.Entity<UserFriendship>(entity =>
{
entity.HasKey(f => f.Id);
entity.HasOne(u => u.UserA)
.WithMany(n => n.UserFriendships)
.HasForeignKey(u => u.UserAId)
.IsRequired();
entity.HasOne(u => u.UserB)
.WithMany(n => n.UserFriendships)
.HasForeignKey(u => u.UserBId)
.IsRequired();
});
当我执行这个命令时:
add-migration InitialMigration -context MyAppContext
我会得到:
无法在“User.UserFriendships”和“UserFriendship.UserB”之间创建关系,因为“User.UserFriendships”和“UserFriendship.UserA”之间已经存在关系。导航属性只能参与单个关系。
我不是EnityFramework 的专家,但基于那个错误我认为我不能在同一个表中定义两个FK?
如有错误请见谅,谢谢。
【问题讨论】:
标签: asp.net entity-framework asp.net-core