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 上看到了有关此错误的解决方案的问题,但我想了解术语“主体端”的含义。
在一对一的关系中,一端必须是主要的,而另一端必须是从属的。主端是最先插入的端,它可以在没有依赖端的情况下存在。依赖端是必须插入主体之后的端,因为它具有主体的外键。
如果实体框架 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);