【发布时间】:2012-11-30 03:27:16
【问题描述】:
我的应用程序使用本地化。它的构建方式是检查实体(遍历结构)并翻译每个标记为“翻译”的属性。
翻译存储在单独的翻译表中。
这一切都很好,但它给我留下了一个问题,当我使用翻译更新实体时,我现在在我的“默认”值中获取翻译值。而且我不希望那样。
让我试着解释得更好。
数据库:
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 而不必想出另一种处理本地化的方法。
【问题讨论】:
标签: fluent-nhibernate mapping cascade