6
EFコードFirst Fluent APIでの外部キーの定義について質問があります。 私はこのようなシナリオを持っています:外部キーエンティティフレームワークコードの指定まず、Fluent Api
2人のクラスPersonとCar。私のシナリオでは、CarはPersonまたはNot(1つまたはゼロの関係)を割り当てることができます。 コード:私はPPPPPに外部キーPERSONIDの名前を変更したい私のサンプルで
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Car
{
public int Id { get; set; }
public string Name { get; set; }
public Person Person { get; set; }
public int? PPPPP { get; set; }
}
class TestContext : DbContext
{
public DbSet<Person> Persons { get; set; }
public DbSet<Car> Cars { get; set; }
public TestContext(string connectionString) : base(connectionString)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Car>()
.HasOptional(x => x.Person)
.WithMany()
.HasForeignKey(x => x.PPPPP)
.WillCascadeOnDelete(true);
base.OnModelCreating(modelBuilder);
}
}
。
modelBuilder.Entity<Car>()
.HasOptional(x => x.Person)
.WithMany()
.HasForeignKey(x => x.PPPPP)
.WillCascadeOnDelete(true);
しかし、私の関係はゼロに一つであり、私はWithManyメソッドを使用して間違えるんが、EFは、適切なマッピングを使用してデータベースを生成し、すべてがうまく動作怖い:私のマッピングでは、私は言います。
私のFluent APIコードが間違っている場合や、今のようにするのが良い方法であるとお考えください。
ありがとうございました。
回答ありがとうございます。 – patryko88
Fluent APIのWithMany()部分を「1から1まで」の関係で使用するにはどうすればよいですか? @ patryko88あなたはあなたが望むようにあなたのコードを手に入れましたか?もしそうなら、回答を投稿できますか?ありがとう! –
@BrianBehm EFでは、共有PKマッピングがある場合にのみ、一対一の関係の両側にナビゲーションプロパティを設定できます。 collectionプロパティを省略すると、関係はlike-like-one-one-oneになります。 – Eranga