在 EF7 中添加多个相同类型的导航属性

hyd*_*yde 5 c# entity-framework .net-core

我有一个看起来像这样的模型

public class Issue
{
    public Guid Id { get; set; }

    [Required]
    public User ReportedByUser { get; set; }

    public User ClosedByUser { get; set; }

    public Category Category { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行ef migrations add <MigrationName>时,出现以下错误:

实体类型“WebProject.Models.Issue”上的导航“ReportedByUser”尚未添加到模型中,或被忽略,或目标实体类型被忽略。

User模型中只有 1 个导航属性类型时,我不会收到此错误。我如何使用上面的模型进行这项工作?

hyd*_*yde 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);
    }
Run Code Online (Sandbox Code Playgroud)

并设置如下所示的模型。

public class Issue
{
    public Guid Id { get; set; }   
    [Required]        
    public User ReportedByUser { get; set; }        
    public User ClosedByUser { get; set; }    
}
Run Code Online (Sandbox Code Playgroud)