現在1対多の関係を設定する必要があります:
public class Foo
{
public int FooId { get; set; }
public int? BarId { get; set; }
...
public virtual Bar Bar { get; set; }
}
public class Bar
{
public int BarId { get; set; }
...
public virtual ICollection<Foo> Foos { get; set; }
}
public FooMap()
{
HasKey(e => e.FooId);
Property(e => e.FooId.IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
Property(e => e.BarId).IsOptional();
...
HasOptional(e => e.Bar).WithMany(Foos).HasForeignKey(e => e.BarId);
}
public BarMap()
{
HasKey(e => e.BarId);
Property(e => e.BarId.IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
...
HasMany(e => e.Foos).WithOptional(e => e.Bar).HasForeignKey(e => e.BarId);
}
ただし、実際には、Bar は 1 つの Foo にしか割り当てることができません。これを設定して、Foos のコレクションではなく、Bar に 1 つの Foo ナビゲーション プロパティを設定することはできますか? 私はまだテーブルをレンダリングしたい:
Foos
- FooId
- BarId (null)
- ...
Bars
- BarId
- ...
クラスを次のようにしたい:
Foo
- FooId
- BarId
- ...
- Bar
Bar
- BarId
- ...
- Foo
WithOptionalDependant と WithOptionalPrincipal をいじっていますが、正しい組み合わせが見つかりません。どんな助けでも大歓迎です!