本地化表和实体框架

发布于 2024-08-10 01:07:57 字数 561 浏览 1 评论 0原文

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

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

动物培养表将包含指向父表中同一动物的 2 条记录。

读回值时,如果用户区域性中不存在“Name”值,则将使用默认值(最初创建对象时使用的值)。 下图演示了如何在 SQL 中存储数据:

替代文本

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

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

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

谢谢,

皮埃尔·伊夫·特罗尔

I have a scenario where I need to localized values of objects in my database.

Let's say you have an application that can create animals, if the user is english the value of the "Name" property of an animal would be entered as "Cat" in the UI whereas it would be entered as "Chat" in french.

The animal culture table would contain 2 records pointing to the same animal in the parent table.

When reading values back, if the value of "Name" does not exist in the user culture the default value (value the object was originally created with) would be used.
The following diagrams demonstrate how the data is stored in SQL:

alt text

I'm trying to map this schema to an object model using the Entity Framework, I'm a bit confused as to what the best way to approach the problem.

Is EF appropriate for this? Should I used EF4?

This EF model will be used by .NET RIA Services.

Thanks,

Pierre-Yves Troel

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

脱离于你 2024-08-17 01:07:57

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

像这样的东西:

var localizedAnimals = myContext.LocalizedAnimals.Where(
                           p => p.CultureName == Thread.CurrentThread.CurrentUICulture.Name
                       );

What I did in a similar situation is created a view say LocalizedAnimals which is a flat representation of that 2 table structure and created an EF model for that view. So when I need to display say French animal data I would filter those LocalizedAnimals and have nice simple object list as a result.

Something like this:

var localizedAnimals = myContext.LocalizedAnimals.Where(
                           p => p.CultureName == Thread.CurrentThread.CurrentUICulture.Name
                       );
不交电费瞎发啥光 2024-08-17 01:07:57

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

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

I'm not sure you'd want to do this in the database. I think it would be more sensible to use a configuration file or resource that defines Culture-specific names.

You might also check Microsoft's documentation on internationalization and localization.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文