[英]Adding multiple navigation properties of the same type in EF7
我有一個看起來像這樣的模型
public class Issue
{
public Guid Id { get; set; }
[Required]
public User ReportedByUser { get; set; }
public User ClosedByUser { get; set; }
public Category Category { get; set; }
}
但是,當我運行ef migrations add <MigrationName>
我收到以下錯誤:
實體類型'WebProject.Models.Issue'上的導航'ReportedByUser'尚未添加到模型中,或被忽略,或者目標entityType被忽略。
當我在模型中只有一個User
類型的導航屬性時,我沒有收到此錯誤。 如何使用上述模型進行此操作?
首先使用遷移進行代碼時,最好顯式聲明外鍵屬性。 此外,如果您堅持使用此屬性的約定ReferencePropertyName + Id ,則不必使用ForeignKeyAttribute來裝飾該類,因為EF將為您解析它。
public class Issue
{
public Guid Id { get; set; }
public Guid ReportedByUserId { get; set; }
public User ReportedByUser { get; set; }
public Guid ClosedByUserId { get; set; }
public User ClosedByUser { get; set; }
}
我能夠通過在我的DbContext中設置以下關系來解決這個問題。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Issue>()
.HasOne(i => i.ReportedByUser)
.WithMany(u => u.Issues)
.OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity<Issue>()
.HasOne(i => i.ClosedByUser)
.WithMany(u => u.Issues)
.OnDelete(DeleteBehavior.Restrict).IsRequired(false);
base.OnModelCreating(modelBuilder);
}
並設置如下模型。
public class Issue
{
public Guid Id { get; set; }
[Required]
public User ReportedByUser { get; set; }
public User ClosedByUser { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.