我有一个类,它有几个本身属于同一个类的属性。获取“原则结束”错误

时间:2014-02-19 20:04:59

标签: c# entity-framework

我有一个名为Person的课程

public class Contact
{
    public int ID{get;set;}
    public string Name{get; set;}
    public Contact Secretary{get; set;}
    public Contact Assistant{get; set;}
}

当我尝试进行数据迁移时,出现以下错误。

 Unable to determine the principal end of an association between the types 
'MyApp.Contact' and 'MyApp.Contact'. The principal end of this association must be 
explicitly configured using either the relationship fluent API or data annotations.

如果我删除两个“联系”类型中的一个,则错误消失。我如何在课堂上有两种联系方式?如果可能的话,我想使用数据注释来解决这个错误。但我不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

我认为这是一个适合您的配置示例。您可能希望显式指定外键名称,因为它们默认使用实体的类型而不是导航属性的名称。

public class MyContext : DbContext
{
    public DbSet<Contact> Contacts { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        var contactConfiguration = new EntityTypeConfiguration<Contact>();
        contactConfiguration.HasOptional(c => c.Secretary).WithOptionalPrincipal();
        contactConfiguration.HasOptional(c => c.Assistant).WithOptionalPrincipal();

        modelBuilder.Configurations.Add(contactConfiguration);
    }
}