我有两个班级
public class Foo
{
public int FooId {get;set;}
public virtual Bar Bar {get;set;}
}
public class Bar
{
public int BarId {get;set;}
public int? FooId {get;set;}
public virtual Foo Foo {get;set;}
}
我正在使用与Entity Framework的流畅映射。如何将Foo和Bar映射到一起,以便我可以:
一个栏和一个或零 foo
一个 foo 和一个或零 bar
我认为这是第3范式的正确模式。如果 Foo 有一个 BarId 外键,我知道怎么做,但事实并非如此。
答案 0 :(得分:1)
要做你想要的事情,你需要配置两种不同的单向关系:
modelBuilder.Entity<Foo>()
.HasOptional(s => s.Bar)
.WithMany();
modelBuilder.Entity<Bar>()
.HasOptional(s => s.Foo)
.WithMany()
.HasForeignKey(s => s.FooId);