nHibernate映射与复合键和集合

时间:2011-11-01 20:02:32

标签: c# asp.net sql-server nhibernate nhibernate-mapping

我在尝试映射包含guids集合的此对象时遇到问题。我有映射工作没有错误,但我不断在OrganizationAdvertistments表中的组织ID中插入空guid。我想知道如何正确映射这个集合?

<?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 个答案:

答案 0 :(得分:2)

你会在广告和组织之间建立多对多的关系吗?如果是,你还有另一个类:组织并在这两个类之间设置多对多关系,并且不需要映射OrganzationIds。你的课程会是这样的:

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>