Локализованные таблицы и платформа Entity Framework
У меня есть сценарий, где мне нужно локализовать значения объектов в моей базе данных.
Скажем, у вас есть приложение, которое может создавать животных, если пользователь является английским, значение свойства "Имя" животного будет введено как "Cat" в пользовательском интерфейсе, тогда как оно будет введено как "Чат" в французский.
Таблица культуры животных будет содержать 2 записи, указывающие на одно и то же животное в родительской таблице.
При чтении значений назад, если значение "Имя" не существует в культуре пользователя, будет использоваться значение по умолчанию (значение, изначально созданное объектом).
На следующих диаграммах показано, как данные хранятся в SQL:
![alt text]()
Я пытаюсь сопоставить эту схему с объектной моделью с помощью Entity Framework, я немного смущен относительно того, как лучше всего подойти к проблеме.
Соответствует ли EF этому? Должен ли я использовать EF4?
Эта модель EF будет использоваться службами .NET RIA.
Спасибо,
Пьер-Ив Троел
Ответы
Ответ 1
То, что я сделал в подобной ситуации, создало представление say LocalizedAnimals, которое является плоским представлением этой 2-х табличной структуры и создало EF-модель для этого представления. Поэтому, когда мне нужно отобразить французские данные о животных, я бы отфильтровал эти LocalizedAnimals и получил хороший простой список объектов в результате.
Что-то вроде этого:
var localizedAnimals = myContext.LocalizedAnimals.Where(
p => p.CultureName == Thread.CurrentThread.CurrentUICulture.Name
);
Ответ 2
Я не уверен, что вы захотите сделать это в базе данных. Я думаю, было бы разумнее использовать файл конфигурации или ресурс, который определяет имена, специфичные для культуры.
Вы также можете проверить документацию Microsoft на интернационализацию и локализацию.