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上看到了有关此错误的解决方案的问题,但我想了解“主要目的”一词的含义。
在一对一关系中,一端必须是主体,第二端必须是从属关系。主体端是将首先插入的端,并且可以存在而无需从属端。从属端是必须在主体后插入的一端,因为它具有主体的外键。
如果是实体框架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);