Ini mengacu pada jawaban @Ladislav Mrnka tentang penggunaan api yang lancar untuk mengkonfigurasi hubungan satu-ke-satu.
Punya situasi di mana memiliki FK of dependent must be it's PK
tidak layak.
Misalnya, Foo
sudah memiliki hubungan satu-ke-banyak dengan Bar
.
public class Foo {
public Guid FooId;
public virtual ICollection<> Bars;
}
public class Bar {
//PK
public Guid BarId;
//FK to Foo
public Guid FooId;
public virtual Foo Foo;
}
Sekarang, kami harus menambahkan hubungan satu-ke-satu lainnya antara Foo dan Bar.
public class Foo {
public Guid FooId;
public Guid PrimaryBarId;// needs to be removed(from entity),as we specify it in fluent api
public virtual Bar PrimaryBar;
public virtual ICollection<> Bars;
}
public class Bar {
public Guid BarId;
public Guid FooId;
public virtual Foo PrimaryBarOfFoo;
public virtual Foo Foo;
}
Berikut ini cara menentukan hubungan satu-ke-satu menggunakan api fasih:
modelBuilder.Entity<Bar>()
.HasOptional(p => p.PrimaryBarOfFoo)
.WithOptionalPrincipal(o => o.PrimaryBar)
.Map(x => x.MapKey("PrimaryBarId"));
Perhatikan bahwa saat menambahkan PrimaryBarId
perlu dihapus, karena kami menetapkannya melalui api yang lancar.
Perhatikan juga bahwa nama metode [WithOptionalPrincipal()][1]
agak ironis. Dalam hal ini, Kepala Sekolah adalah Bar. Deskripsi WithOptionalDependent () pada msdn membuatnya lebih jelas.