一尘不染

关联的主要终点在实体框架中以1:1关系表示什么

c#

public class Foo
{
    public string FooId{get;set;}
    public Boo Boo{get;set;}
}


public class Boo
{
    public string BooId{get;set;}
    public Foo Foo{get;set;}
}

当我收到错误消息时,我正在尝试在Entity Framework中执行此操作:

无法确定类型’ConsoleApplication5.Boo’和’ConsoleApplication5.Foo’之间的关联的主要终点。必须使用关系流利的API或数据注释显式配置此关联的主要端。

我已经在StackOverflow上看到了有关此错误的解决方案的问题,但我想了解“主要目的”一词的含义。


阅读 267

收藏
2020-05-19

共1个答案

一尘不染

在一对一关系中,一端必须是主体,第二端必须是从属关系。主体端是将首先插入的端,并且可以存在而无需从属端。从属端是必须在主体后插入的一端,因为它具有主体的外键。

如果是实体框架FK,则从属实体还必须是它的PK,因此在您的情况下,您应该使用:

public class Boo
{
    [Key, ForeignKey("Foo")]
    public string BooId{get;set;}
    public Foo Foo{get;set;}
}

或流利的贴图

modelBuilder.Entity<Foo>()
            .HasOptional(f => f.Boo)
            .WithRequired(s => s.Foo);
2020-05-19