簡體   English   中英

在EF7中添加相同類型的多個導航屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM