10

我有一个场景,我需要在我的数据库中本地化对象的值。

假设您有一个可以创建动物的应用程序,如果用户是英语用户,则动物的“名称”属性的值将在 UI 中输入为“猫”,而在法语中输入为“聊天”。

动物文化表将包含 2 条指向父表中相同动物的记录。

回读值时,如果用户文化中不存在“名称”的值,则将使用默认值(对象最初创建时使用的值)。下图展示了数据是如何存储在 SQL 中的:

替代文字

我正在尝试使用实体框架将此模式映射到对象模型,我对解决问题的最佳方法有点困惑。

EF适合这个吗?我应该使用 EF4 吗?

此 EF 模型将由 .NET RIA 服务使用。

谢谢,

皮埃尔-伊夫·特罗尔

4

2 回答 2

4

我在类似情况下所做的是创建了一个视图,即 LocalizedAnimals,它是该 2 个表结构的平面表示,并为该视图创建了一个 EF 模型。因此,当我需要显示法国动物数据时,我会过滤那些 LocalizedAnimals 并得到很好的简单对象列表。

像这样的东西:

var localizedAnimals = myContext.LocalizedAnimals.Where(
                           p => p.CultureName == Thread.CurrentThread.CurrentUICulture.Name
                       );
于 2010-06-16T14:18:04.683 回答
-1

我不确定您是否想在数据库中执行此操作。我认为使用定义特定文化名称的配置文件或资源会更明智。

您还可以查看 Microsoft 关于国际化和本地化的文档。

于 2009-11-03T16:18:25.930 回答