Fluent API を使用して「外部キー」をマップする列名を指定しようとしています。SQL Express のインスタンスに接続しています。Stack Overflow と Google を検索しましたが、さまざまな構成例の多くで同じ結果が得られました。
製品クラス
public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
public virtual Product ParentProduct { get; set; }
public virtual ICollection<Product> ChildProducts { get; set; }
}
Entity Framework への製品マップ
public class ProductMap : EntityTypeConfiguration<Product>
{
public ProductMap() {
HasKey(p => p.ProductId);
Property(p => p.Name)
.IsRequired();
// Self referencing foreign key association
Property(c => c.ParentId)
.IsOptional();
HasMany(c => c.ChildProducts)
.WithOptional(c => c.ParentProduct)
.HasForeignKey(c => c.ParentId);
}
}
問題
プログラムを実行し、EF が db を作成すると、ParentID
列が出てきてNULL
、という列が作成されParentProduct_ProductId
ます。この列には、ParentId の正しい値が含まれています。
私は EF で Fluent API を使用するのが初めてなので、これは経験不足のせいです。ParentId
代わりに、自動生成された列で列を埋めるにはどうすればよいですか?