C# Entity Framework 与 class 中相同 class 的代码优先关系

C# Entity Framework code-first relationship to same class within the class

我一直在寻找与我类似的问题,但我还没有找到答案。

我正在尝试将一个人 class 与其他 2 种类型的 "Person"(SignificantOther 和 Match)联系起来,但出现以下错误:

Unable to determine the principal end of an association between the types 'Namespace.Models.Person' and 'Namespace.Models.Person'.

这是我的 class:

public class Person
{
    public Person()
    {

    }
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public Person SignificantOther { get; set; }
    public Person Match { get; set; }
}

我尝试使用外键数据注释,但没有用(也许我做错了)。我觉得有一个简单的方法,我只是忽略了。有任何想法吗?

我先使用代码,然后使用 LocalDb。

我不得不使用 Fluent API,并添加一个可选的重要的其他人,以及匹配,与可选的主体。

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Person>().HasOptional(p1 => p1.SignificantOther).WithOptionalPrincipal();
        modelBuilder.Entity<Person>().HasOptional(m => m.Match).WithOptionalPrincipal();
    }

感谢 CodeCaster 为我指明了正确的方向!