Отображение nHibernate с составным ключом и коллекцией - PullRequest
1 голос
/ 02 ноября 2011

У меня возникают проблемы при попытке сопоставить этот объект, который содержит коллекцию направляющих. У меня отображение работает без ошибок, однако я продолжаю получать пустые направляющие, вставленные в OrganizationId в таблице OrganizationAdvertistments. Мне было интересно, как правильно сопоставить этот набор?

<?xml version="1.0" encoding="utf-8" ?>

<class name="Advertisement" table="Advertisement" lazy="false">
    <id name="Id">
        <generator class="guid"></generator>
    </id>
    <property name="DateStart"/>
    <property name="DateExpired"/>
    <property name="Title"/>
    <property name="Body"/>

    <set name="OrganzationIds" table="OrganizationAdvertisements" lazy="true">

        <key>
            <column name="AdvertisementId"></column>
        </key>
        <element  column="OrganizationId" type="Guid" />


    </set>


</class>

1 Ответ

2 голосов
/ 02 ноября 2011

Будете ли вы иметь много-много отношений между рекламой и организацией?если да, у вас есть другой класс: организация и множество-множество отношений между этими двумя классами, и нет необходимости отображать OrganizationIds.Ваш класс будет выглядеть примерно так:

class Advertisement
{
 //other properties
 public virtual ISet<Organization> Organizations {ge;set}
}

и ваша карта:

 <class name="Advertisement" table="Advertisement" lazy="false">  
        <id name="Id">  
            <generator class="guid"></generator>  
        </id>  
        <property name="DateStart"/>  
        <property name="DateExpired"/>  
        <property name="Title"/>  
        <property name="Body"/>  

         <set name="Organizations"
               table="OrganizationAdvertisements"
               lazy="true">
            <key column="AdvertisementId" />
            <many-to-many class="Namespace.Organization"
                          column="OrganizationID" />
          </set>
    </class>  
...