如何在Fluent NHibernate映射中进行自引用多对多关系?

时间:2009-08-04 21:04:17

标签: nhibernate fluent-nhibernate

有人可以告诉我如何使用Fluent NHibernate完成此映射吗?它只是一个带有复合键的帐户表,在连接表中有许多子帐户。

这是工作的NHibernate映射及其生成的create SQL:

<?xml version="1.0"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true">
<class name="NHibernateM2M000.Account, NHibernateM2M000"  lazy="false">
    <composite-id>
        <key-property type="Int32" name="AccountId" />
        <key-property type="Char" name="AccountTypeAbbr" />
    </composite-id>
    <property name="Name" column="AccountName" />
    <bag name="ChildAccounts" lazy="false" table="AccountXref">
        <key>
            <column name="ParentAccountId" sql-type="int" />
            <column name="ParentAccountTyper" sql-type="nchar" length="1" />
        </key>
        <many-to-many class="NHibernateM2M000.Account, NHibernateM2M000">
            <column name="ChildAccountId" sql-type="int"/>
            <column name="ChildAccountType" sql-type="nchar" length="1" />              
        </many-to-many>
    </bag>
</class>

create table Account (AccountId INT not null, AccountTypeAbbr NCHAR(1) not null, AccountName NVARCHAR(255) null, primary key (AccountId, AccountTypeAbbr))

create table AccountXref (ParentAccountId int not null, ParentAccountTyper nchar not null, ChildAccountId int not null, ChildAccountType nchar not null)

alter table AccountXref add constraint FKB769F8B52F1320AB foreign key (ChildAccountId, ChildAccountType) references Account

alter table AccountXref add constraint FKB769F8B5A2DB3DC7 foreign key (ParentAccountId, ParentAccountTyper) references Account

1 个答案:

答案 0 :(得分:0)

我相信在发布这篇文章之后看到Fluent NHibernate,现在,这是不可能的。放入.hbm文件是实现我想要的唯一方法。