【发布时间】:2020-12-17 07:34:14
【问题描述】:
我有一个现有的 API,它现在在它使用的数据库中有表,这些表必须有一个复合键。 我使用 fluent API 来定义 dbcontext 中的键。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
//relationship modeling
modelBuilder.Entity<Reports>().HasMany(r => r.Screenshots).WithOne().HasForeignKey(r => new { r.ReportId, r.itemTypeId });
modelBuilder.Entity<Images>().HasOne(s => s.Reports).WithMany(s => s.Screenshots).HasForeignKey(s => new { s.ReportId, s.itemTypeId });
modelBuilder.Entity<EpicReportsChildList>().HasOne(e => e.Reports).WithMany(e => e.EpicReports).HasForeignKey(e => new { e.TemplateId, e.parentTypeId });
modelBuilder.Entity<Images>().HasOne(s => s.EpicReports).WithMany(s => s.Screenshots).HasForeignKey(s => new { s.ReportId, s.itemTypeId });
}
我有以下启动文件:
private IEdmModel GetEdmModel()
{
var oDatabuilder = new ODataConventionModelBuilder();
oDatabuilder.EntitySet<Reports>("reports");
return oDatabuilder.GetEdmModel();
}
API 返回以下错误:
实体类型EpicReportsChildList 具有使用数据注释定义的复合主键。要设置复合主键,请使用 fluent API。
【问题讨论】:
标签: asp.net-core-webapi asp.net-core-3.1