代码之家  ›  专栏  ›  技术社区  ›  ZeroBugBounce

在流畅的NHibernate映射中,如何使一个自引用多对多关系?

  •  0
  • ZeroBugBounce  · 技术社区  · 15 年前

    有人能告诉我如何使用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 回复  |  直到 15 年前
        1
  •  0
  •   ZeroBugBounce    15 年前

    我相信,在看到FluentNHibernate的时候,现在,这是不可能的。进入.hbm文件是实现我在这里想要的唯一方法。