只有一个外键流畅映射的零到一

时间:2017-11-21 19:17:39

标签: c# entity-framework entity-relationship fluent

我有两个班级

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 外键,我知道怎么做,但事实并非如此。

1 个答案:

答案 0 :(得分:1)

要做你想要的事情,你需要配置两种不同的单向关系:

modelBuilder.Entity<Foo>()
            .HasOptional(s => s.Bar)
            .WithMany();

modelBuilder.Entity<Bar>()
            .HasOptional(s => s.Foo)
            .WithMany()
            .HasForeignKey(s => s.FooId);