Jer*_*dev 10 c# sql-server entity-framework-core .net-core
在我的项目中,我有一个Translation可以翻译任何模型的表.为实现这一目标,该表有两个字段:Model和ModelId.该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)
有没有办法创建这种关系,而无需为每个需要翻译的查询手动创建连接?
就在这里。用这个:
modelBuilder.Entity<BaseModel>()
.HasMany(bm => bm.Translations)
.WithForeignKey(x => new { x.Key1, x.Key2 });
Run Code Online (Sandbox Code Playgroud)
Key1 和 Key2 显然需要成为关系的键,您可能还需要为翻译实体定义它们(以相同的顺序)。
| 归档时间: |
|
| 查看次数: |
1387 次 |
| 最近记录: |