簡體   English   中英

使用同一實體的一對一關系+一對多關系

[英]One-to-one relation + on-to-many relation using same entity

我正在嘗試創建一個具有多個聯系人以及一個主要聯系人的客戶實體,但是由於出現以下錯誤,我似乎無法添加遷移:

無法確定由“客戶”類型的導航屬性“ ContactPerson.Customer”表示的關系。 手動配置關系,或者使用“ [NotMapped]”屬性或通過“ OnModelCreating”中的“ EntityTypeBuilder.Ignore”忽略此屬性。

顧客

public class Customer
{
    public Guid CustomerId { get; set; }
    public string Name { get; set; }
    public DateTime CreateDate { get; set; }
    public string City { get; set; }
    public string Address { get; set; }

    // Contact person data
    public virtual ContactPerson PrimaryContactPerson { get; set; }
    public virtual ICollection<ContactPerson> ContactPersons { get; set; }
}

聯系人

public class ContactPerson
{
    public Guid ContactPersonId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public virtual Customer Customer { get; set; }
}

我嘗試自己添加外鍵,並在Customer實體以及ContactPerson實體上用我的實體對外鍵屬性進行注釋,如下所示:

public class ContactPerson
{
    public Guid ContactPersonId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    [ForeignKey("Customer")]
    public Guid CustomerId { get; set; }
    public virtual Customer Customer { get; set; }
}

但這似乎沒有什么區別,我仍然遇到相同的錯誤。 EF如何無法確定關系?

我想這與同時存在於一對多關系的一對一關系有關,但是我似乎無法將這個問題束之高閣。 意見和建議深表感謝!

如果我注釋掉PrimaryContactPerson屬性,EF可以很好地添加遷移,因此我很肯定這與兩個不同的關系有關。

我設法使用Entity Framework Fluent API解決了我的問題,如下所示:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<ContactPerson>(e =>
        e.HasOne(r => r.Customer).WithMany(c => c.ContactPersons)
    );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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