实体框架核心中使用两列的一对多关系

Jer*_*dev 10 c# sql-server entity-framework-core .net-core

在我的项目中,我有一个Translation可以翻译任何模型的表.为实现这一目标,该表有两个字段:ModelModelId.该Model属性包含一个整数,表示模型的类型,并ModelId具有此模型的ID.
因此,例如:该Product表具有modeltype id 1.要获取具有id的产品的所有翻译317,我将搜索翻译Model=1 AND ModelId=317.

现在我想在Entity Framework Core中创建这种关系.我的所有模型都继承自BaseModel具有包含ModelType模型类型id的属性的类.此字段未映射,因此在数据库中不可用.

我试图使用流畅的api创建关系,但它不允许我指定更多的列来过滤.

modelBuilder.Entity<BaseModel>()
    .HasMany<Translation>(bm => bm.Translations)
    // Extra filters
Run Code Online (Sandbox Code Playgroud)

有没有办法创建这种关系,而无需为每个需要翻译的查询手动创建连接?

Ric*_*res 0

就在这里。用这个:

modelBuilder.Entity<BaseModel>()
.HasMany(bm => bm.Translations)
.WithForeignKey(x => new { x.Key1, x.Key2 });
Run Code Online (Sandbox Code Playgroud)

Key1 和 Key2 显然需要成为关系的键,您可能还需要为翻译实体定义它们(以相同的顺序)。