我拥有的应用程序使用本地化。它的构建方式是检查一个实体(遍历结构)并翻译每个标记为“翻译”的属性。
翻译存储在单独的翻译表中。
这一切都很好,但它给我留下了一个问题,当我使用翻译更新实体时,我现在在我的“默认”值中获得翻译的值。我不希望那样。
让我试着解释得更好。
数据库:
footprintlinevLue的映射:
public class FootprintLineValueMap : ClassMap<FootprintLineValue> {
public FootprintLineValueMap() {
Table("FootprintLineValue");
Id(x => x.Id).GeneratedBy.Identity().Column("Id");
References(x => x.FootprintLine).Column("FootprintLineId");
References(x => x.CategoryValue).Column("CategoryValueId").Cascade.None();
}
如您所见,足迹线有多个引用 categoryValue 的值。categoryvalue 已本地化。
当我现在检索足迹时,我们的框架将把它通过我们的翻译服务,并自动翻译相应文化中 CategoryValue 的名称和描述。如果在 CategoryValueLocal 中找不到翻译,它将使用 CategoryValue 中的默认值。
但是...如果我保存足迹线,它会将翻译后的值保存回 CategoryValue (覆盖默认值)而不是忽略它。
CategoryValues 不是值对象,可以更改,因此我不能将它们设为只读。我试图将引用映射为 Cascade.None,但这似乎没有任何作用。
我希望有一种方法可以在映射中简单地标记它,这样我们就可以继续使用我们的 TranslationService 而不必找出另一种处理本地化的方法。