我正在尝试根据实体框架 6 中的三个导航属性创建一个组合键:ManufacturingBundle_Id、Part_Id 和 Process_Id
这是我目前使用的 PartProcess 类,其中 Id 是主键:
public class PartProcess
{
public int Id { get; set; }
public virtual ManufacturingBundle ManufacturingBundle { get; set; }
public virtual Part Part { get; set; }
public virtual Process Process { get; set; }
}
目前,我得到了自动生成的数据库表,其中包含以下列: 编号 |ManufacturingBundle_Id |Part_Id |Process_Id
其中 Id 是主键。我想摆脱 Id 列并根据 ManufacturingBundle_Id、Part_Id 和 Process_Id 制作复合主键
所以我尝试重载 OnModelCreate 方法,但这似乎不适用于类型化对象,调试器说属性需要是整数。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// create a composite primary key for PartProcess https://www.learnentityframeworkcore.com/configuration/fluent-api/haskey-method
modelBuilder.Entity<PartProcess>()
.HasKey(o => new { o.ManufacturingBundle, o.Part, o.Process });
base.OnModelCreating(modelBuilder);
}
由于我使用导航属性,并且ManufacturingBundle_Id、Part_Id 和Process_Id属性是由实体框架自动生成的,因此必须如何声明此复合主键?
感谢您的帮助,
艾菲
例如,假设 ManufacturingBundle 有一个 ManufacturingBundleId 字段,您需要按如下方式配置模型:
public class PartProcess
{
public int ManufacturingBundleId { get; set; }
public virtual ManufacturingBundle ManufacturingBundle { get; set; }
public int PartId { get; set; }
public virtual Part Part { get; set; }
public int ProcessId { get; set; }
public virtual Process Process { get; set; }
}
然后,它应该允许您在创建模型时创建组合键,如上所述。