我有一个看起来像这样的模型
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>
时,我收到以下错误:
导航&#39; ReportedByUser&#39;在实体类型&#39; WebProject.Models.Issue&#39; 尚未添加到模型中,或忽略或目标entityType 忽略。
当我在模型中只有1个User
类型的导航属性时,我没有收到此错误。如何使用上述模型进行此操作?
答案 0 :(得分:2)
当您首先使用迁移进行代码时,最好显式声明外键属性。 此外,如果您坚持使用此属性的约定 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; }
}
答案 1 :(得分:1)
我能够通过在我的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; }
}