本地化表和实体框架

Pyt*_*oll 10 c# culture entity entity-framework

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

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

动物培养表将包含2个指向父表中相同动物的记录.

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

替代文字

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

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

.NET RIA Services将使用此EF模型.

谢谢,

Pierre-Yves Troel

Ala*_*ich 5

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

像这样的东西:

var localizedAnimals = myContext.LocalizedAnimals.Where(
                           p => p.CultureName == Thread.CurrentThread.CurrentUICulture.Name
                       );
Run Code Online (Sandbox Code Playgroud)


小智 -1

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

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

  • 资源更专用于存储静态值而不是动态值,就像在本例中一样。动物是一个你不知道有多少值(实例)的实体的定义。在这种情况下,Pyttroll 建议使用更好的方法(不是唯一的方法) (7认同)