我正在尝试创建一个拥有多个联系人的客户实体,以及一个主要联系人,但我似乎无法添加迁移,因为我收到以下错误:
无法确定“客户”类型的导航属性“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; }
}
ContactPerson
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会很好地添加迁移,所以我很肯定这与两种不同的关系有关。
答案 0 :(得分:0)
我设法使用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)
);
}