как мне это отобразить? - PullRequest
0 голосов
/ 08 января 2010

Я уверен, что я глуп (что мне только что объяснил какой-то высокомерный клерк в моем банке), но я не понимаю, как это отобразить:

Допустим, у меня есть таблица tbl_products со столбцом ID.и tbl_language со столбцом идентификатора и моей проблемой: tbl_product_texts без какого-либо собственного идентификатора, кроме product_id и language_id (и большого количества текстов на нескольких языках)

мне нужно добавить идентификаторстолбец к моей таблице (что некрасиво) или nhibernate может как-то отследить это в тайне и является ли этот тип модели данных концептуально неправильным или что-то в этом роде?

Ответы [ 2 ]

0 голосов
/ 08 января 2010

Product имеет отношение один-ко-многим с ProductText, поэтому вы должны смоделировать Text как коллекцию в своем классе Products. У вас tbl_products_text должен быть первичный ключ. Вы не указываете, какую базу данных вы используете, но мой подход заключается в использовании суррогатного первичного ключа (идентификатора) и уникального ограничения для product_id, language_id. Вам не нужно предпринимать этот шаг, чтобы заставить NHibernate работать, если вы не управляете текстами в своем приложении.

Первый проход в вашем классе Product будет выглядеть так:

public class Product
{
    public IList<ProductText> ProductTexts { get; set; }
    public string GetTextForLanguage(int languageId) { ... }
}
0 голосов
/ 08 января 2010

Если вы пытаетесь делать то, что я думаю, то вы пытаетесь настроить отображение «многие ко многим» между tbl_Products и tbl_language. В сопоставлении просто сообщите nHibernate, какая таблица служит ссылкой, nHibernate достаточно умен, чтобы разобраться с этим.

https://www.hibernate.org/hib_docs/nhibernate/html/collections.html

Итак, в отображении продуктов (при условии, что вам нужна коллекция языков):

<bag name="nameOfLanguageCollection" table="tbl_product_texts">
  <key column="productID" /> <-- Name of ProductID col in tbl_product_texts
  <many-to-many class="LanguageClass" column="language_id" />  <-- name of languageid in   tbl_product_texts 
</bag>

Я думаю верно. Не могу проверить сейчас.

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