0
votes

Can someone tell me how to accomplish this mapping using Fluent NHibernate? It's simply an account table with a composite key, that has many child accounts in a conjunction table.

Here's the working NHibernate mapping and the create SQL it generates:

<?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

1 Answers

0
votes

I believe after looking at Fluent NHibernate at the time of this posting and now, that it's not possible. Dropping into the .hbm file is the only way to accomplish what I wanted here.