Проблема с файлом сопоставления (связь) - PullRequest
0 голосов
/ 08 августа 2011

Я только начал изучать Nhibernate.У меня проблема с отображением (точная связь).У меня есть две таблицы:

Table1 (DIC_TOWN)

TOWN_ID
   1
   2
   3

Таблица 2 (DIC_TOWN_STRINGS)

TOWN_ID    LANG_ID     TOWN_NAME
   1       1            CityName
   1       2            CityName
   2       1            CityName
   2       2            CityName

Мой класс:

public class TownS
    {
        public virtual int TownId { get; set; }

        public virtual Languages LangId { get; set; }

        public virtual string TownName { get; set; }

    }

РЕДАКТИРОВАТЬ:

Мой файл сопоставления:

    <?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="EArchive.Data" namespace="EArchive.Data.Class">
  <class name="TownS" table="DIC_TOWN_STRINGS" lazy="false">   
    <composite-id>
      <key-property name="TownId" column="TOWN_ID" />
      <key-property name="LangId" column="LANG_ID" />
    </composite-id>    

    <property name="TownName" column="TOWN_NAME" />
    <many-to-one name="LangId" column="LANG_ID"/>  
  </class>  
</hibernate-mapping>

Помогите мне написать файл сопоставления.И если возможно, с объяснением.Спасибо.

Ответы [ 2 ]

2 голосов
/ 08 августа 2011

Таблица Dic_Town_Strings должна иметь составной ключ, состоящий как из town_id, так и из lang_id
А свойство LangId должно быть сопоставлено отношением «многие к одному» с отображением вашего класса языка (или изменить объявление свойства TownS LangId на int вместо Language)

1 голос
/ 08 августа 2011

Почему бы не

public class Town
{
    public virtual int TownId { get; private set; }

    public virtual Dict<Language, string> AllNames { get; private set; }

    public virtual string TownName 
    { 
      get { return AllNames[CurrentLanguage]; }
    }

}

Отображение:

<class name="Town">
<id ...>
<map name="AllNames">
  <key column="TOWN_ID"/>
  <index column="LANG_ID"/>
  <element column="TOWN_NAME" />
</map>

Вокруг нет составного ключа, все прямо вперед ...

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