Entity Framework и многоязычные базы данных - PullRequest
7 голосов
/ 18 мая 2010

Мне просто интересно, есть ли какие-нибудь лучшие практики при использовании Entity Framework с многоязычными базами данных? Мой план базы данных для обработки этого должен иметь отдельную таблицу для всех моих переводов:

[Product Table]
ProductID     PK
NameId        FK
DescriptionId FK

[Translation Table]
TextId        PK
LanguageId
TranslationText

Я счастлив согласиться с этим подходом, но мне было интересно, есть ли в Entity Framework какие-либо функции, которые могут помочь с этим? Было бы неплохо иметь объект сущности Product, дать ему язык, а затем получить прямой доступ к полям имени и описания на правильном языке.

Спасибо, Ник

Ответы [ 2 ]

2 голосов
/ 03 августа 2010

Как кто-то спросил, получу ли я когда-нибудь разрешение для этого, я подумал, что добавлю свое решение к этому:

Я изменил схему БД, поэтому вместо одной таблицы для всех переводов для разных типов текста у меня есть отдельная таблица «Текст», например

[Product Table]
ProductID           PK
ProductName         In master language for reference
ProductDesription   In master language for reference
<other product fields>

[ProductText Table]
ProductID             PK
LanguageId            PK
ProductName           Language-Specific name
ProductDescription    Language-Specific description

У меня есть несколько этих «текстовых» таблиц для переводов на местные языки для каждого нужного типа сущности.

Тогда, если мне нужно получить доступ к локализованным данным из EF, я использую следующее (например, для получения текста на немецком языке):

Product product = db.Products.Where(m => m.ProductId == 1);
ProductName germanProductName = product.ProductNames(m => m.LanguageId == "de");

Надеюсь, это поможет

1 голос
/ 20 мая 2010

Entity Framework - это ORM общего назначения, он не предлагает никаких специфичных для домена функций. Многоязычная поддержка для конкретного приложения - это проблема, специфичная для домена.

Вы ищете что-то конкретное?

...