尝试创建一个可以将2个应用程序用户连接在一起的类,但迁移会在混合中添加额外的用户ID,这让我觉得我做错了,
public class UserReview
{
[Key]
[Column(Order = 5)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Column(Order = 10)]
[ForeignKey("ApplicationUserReviewer")]
public string ReviewerUserId { get; set; }
public virtual ApplicationUser ApplicationUserReviewer { get; set; }
[Column(Order = 15)]
[ForeignKey("ApplicationUserReviewed")]
public string ReviewedUserId { get; set; }
public virtual ApplicationUser ApplicationUserReviewed { get; set; }
/*few more fields*/
}
在我添加的应用程序用户中
public virtual ICollection<UserReview> UserReviews { get; set; }
在ApplicationDbContext中添加了
public DbSet<UserReview> UserReviews { get; set; }
迁移在这个意义上产生了一些东西,最后有额外的用户ID
ID = c.Int(nullable: false, identity: true),
ReviewerUserId = c.String(maxLength: 128),
ReviewedUserId = c.String(maxLength: 128),
/*....*/
ApplicationUser_Id = c.String(maxLength: 128),
任何解决此事的建议,
此外,我尝试使用UserId和applicationuser_id为第一个用户ID仍尝试添加第3个引用。
答案 0 :(得分:4)
问题是你在User和UserReview之间有2个连接,所以当你创建UserReviews的集合时,实体框架并不真正知道你想要使用哪个连接。要配置此类事物,您应该在DBContext类上使用FluentAPI进行配置。看看这个答案Entity Framework Code First - two Foreign Keys from same table
做这样的事情:
modelBuilder.Entity<UserReview>()
.HasRequired(m => m.ApplicationUserReviewer)
.WithMany(t => t.UserReviews)
.HasForeignKey(m => m.ApplicationUserReviewerId);