Nhibernate и многоязычное отображение данных - PullRequest
2 голосов
/ 21 июля 2009

Мы пытаемся создать сайт, который будет поддерживать многоязычные данные, и мы используем asp.net и nhibernate для отображения O / R. После некоторого поиска в Google мы решили, что для нас лучше всего создать классы сущностей, содержащие все поля, необходимые для поддержки языка по умолчанию (английский), и для каждого многоязычного класса мы создадим новый класс, содержащий только многоязычные поля плюс идентификатор основного (английский) класс и идентификатор языка. Например, в простом классе «product» у нас могут быть поля:

продукт

int ID
строка DescriptionInEnglish
строка FullDescriptionInEnglish
десятичная цена

и второй класс "product_Lang", содержащий

product_Lang

int Product_ID
int Language_ID
Строка Описание
строка FullDescription

тогда для возможности загрузки продукта на любом языке мы могли бы добавить product_Lang *1022* с именем lang к products и для простого связывания мы могли два свойства только для чтения:

string DescriptionToBind
{
  get
  {
    if (lang != null)
       return this.lang.Description;
    else
       return this.DescriptionInEnglish;
  }
}

string FullDescriptionToBind
{
  get
  {
    if (lang != null)
       return this.lang.FullDescription;
    else
       return this.FullDescriptionInEnglish;
  }
}

для загрузки некоторых продуктов мы можем использовать некоторые методы в ProductRpository, например:

 Product GetProductByID(int ID);
 Product GetProductbyID_ML(int ID, int Language_ID);

и для загрузки некоторых коллекций

 IList<Product> GetAllProducts();
 IList<Product> GetAllProducts_ML(Language_ID);

Проблема заключается в том, как сопоставить свойство Lang внутри класса продукта в nhibernate. Это может быть легко, но я не могу понять. Это не один к одному, потому что в английском языке язык не обязателен. Я думал об одном ко многим, поэтому я загружаю список всех, но я думаю, что не справедливо загружать все языки, потому что мне нужен только один.

Любая помощь? или какие-то другие предложения все равно дадут честную работу?

1 Ответ

1 голос
/ 22 июля 2009

Я написал подробную статью о многоязыковой реализации с ASP.NET и NHibernate.

Проверка Создание модели многоязыкового домена с помощью NHibernate и C #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...