【发布时间】:2018-12-12 00:06:57
【问题描述】:
让我先说这是我对实体框架和一般关系数据库的第一次真实体验。如果我完全错了,请告诉我。
我希望我的数据结构如下(减少“额外”代码):
Indicators {
int SomeText1TranslationRef
List<Translation> SomeText1Translations
int SomeText2TranslationRef
List<Translation> SomeText2Translations
}
Measures {
int SomeText3TranslationRef
List<Translation> SomeText3Translations
int SomeText3TranslationRef
List<Translation> SomeText4Translations
}
Translation {
Int TranslationID
String LanguageCode
String Text
}
所以本质上,指标表将包含 SomeText1 Translations 和 SomeText2 的列表,所有这些都使用 TranslationID 通过“Ref”属性连接。
我有用[ForeignKey("....Ref")] 注释的翻译属性。
我希望这会像框架的其余部分一样神奇地工作,但翻译表获取名为“SomeText1TranslationRef”和“SomeText2TranslationRef”的列。
我做错了吗?
我正在查看 Entity Framework 的其他功能并看到“InverseProperty”的注释。有什么帮助吗?
【问题讨论】:
-
你能发布你的实际代码吗?
-
当然。我避免这样做,因为我发现它更加不透明:gist.github.com/knyzorg/085509cc85dce0cd3f51c4ff6b8ffd34@Hintham
-
我无法从您的代码中真正看出各种实体之间的关系是什么,但很可能您应用了错误的
ForeignKey属性。它可以通过以下三种方式之一使用: -[ForeignKey(NavigationPropertyName)]用于依赖实体中的外键引用属性 -[ForeignKey(ForeignKeyPropertyName)]用于依赖实体中的导航属性 -[ForeignKey(ForeignKeyPropertyName)]用于主体实体中的导航属性。 -
public int NameTranslationRefID { get; set; } [ForeignKey("NameTranslationRefID")] public ICollection<Translation> Names { get; set; }不是第二种方式吗? @Hintham -
是的,确实如此。但就像我说的,我无法真正说出实体之间的关系,所以不确定它们是否被正确应用
标签: c# .net asp.net-mvc entity-framework .net-core