小编典典

在实体框架中的 1:1 关系中,关联的主体端是什么意思

all

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;}
}

当我收到错误时,我试图在实体框架中执行此操作:

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

我在 StackOverflow 上看到了有关此错误的解决方案的问题,但我想了解术语“主体端”的含义。


阅读 121

收藏
2022-05-07

共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);
2022-05-07