EFで外部キーをnullにすることができる1対1の関係を作成する必要があります(したがって、0..1から0..1と呼ぶことができます)null可能な外部キーとの1対1の関係
public class ProductInstance
{
public int Id { get; set; }
public int SaleId { get; set; }
public Sale Sale { get; set; }
}
public class Sale
{
public int Id { get; set; }
public ProductInstance ProductInstance { get; set; }
}
FluentAPI
設定:
modelBuilder.Entity<Sale>()
.HasOptional(x => x.ProductInstance)
.WithOptionalPrincipal(x => x.Sale);
しかし、それは表ProductInstance
に2つの列を生成します:
Sale_id
- 外部キーSaleId
ここで生成される移行コード:
CreateTable(
"dbo.ProductInstances",
c => new
{
Id = c.Int(nullable: false, identity: true),
SaleId = c.Int(nullable: false),
Sale_Id = c.Int(),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.Sales", t => t.Sale_Id)
.Index(t => t.Sale_Id);
どのように私は、外部キーになります1つの列のみSaleId
を得るために行うことができますか?
なぜあなたは販売のインスタンスへの関連付けやプロパティの両方を作成しますSaleインスタンスのIDを保持していますか?そのため、表の2つの列が作成される理由があります。 –
EFはEntity Frameworkを表しているため、値オブジェクトではないエンティティとしてのみ機能します。後者のバージョンでは、value-objectsもサポートしています。 – Mohamadreza