我正在尝试指定一个列名以将“外键”映射到使用 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; }
}
实体框架的产品映射
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 创建数据库时,结果是ParentID
列出来了NULL
,它创建了一个名为ParentProduct_ProductId
. 此列包含 ParentId 的正确值。
我不熟悉将 Fluent API 与 EF 一起使用,所以我将此归结为缺乏经验。如何让自动生成的列来填充ParentId
列?