我有一个场景,我需要在数据库中对象的本地化值。
假设您有一个可以创建动物的应用程序,如果用户是英语,动物的“名称”属性的值将在UI中输入为“猫”,而它将作为“聊天”输入法语。
动物养殖表将包含2个指向父表中同一动物的记录。
当读回值时,如果用户文化中不存在“名称”的值,则将使用默认值(最初创建对象的值)。 下图说明了如何在SQL中存储数据:
我正在尝试使用实体框架将此架构映射到对象模型,我对解决问题的最佳方法感到困惑。
EF适合这个吗?我应该使用EF4吗?
此.NET模型将由.NET RIA Services使用。
谢谢,
Pierre-Yves Troel
答案 0 :(得分:4)
我在类似情况下所做的是创建一个视图说LocalizedAnimals,它是该2表结构的平面表示,并为该视图创建了EF模型。因此,当我需要显示说法国动物数据时,我会过滤那些LocalizedAnimals,并因此得到漂亮的简单对象列表。
这样的事情:
var localizedAnimals = myContext.LocalizedAnimals.Where(
p => p.CultureName == Thread.CurrentThread.CurrentUICulture.Name
);
答案 1 :(得分:-1)
我不确定你是否想在数据库中这样做。我认为使用定义特定于文化的名称的配置文件或资源会更明智。
您还可以查看Microsoft internationalization and localization上的文档。