5

私のマップには次のものがあります。

Component(
    x => x.ExposureKey,
    m => {
        m.Map(x => x.AsOfDate).Not.Nullable();
        m.Map(x => x.ExposureId).Length(30).Not.Nullable();
    }
).Unique();

HBM からの関連する出力は次のとおりです。

<component name="ExposureKey" insert="true" update="true" optimistic-lock="true" class="Some.Namespace.CreditExposureKey, Some.Namespace, Version=0.0.0.0, Culture=neutral, PublicKeyToken=aaaaaaaaaaaaaaaa">
    <property name="AsOfDate" type="System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <column name="AsOfDate" not-null="true"/>
    </property>
    <property name="ExposureId" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <column name="ExposureId" length="30" not-null="true"/>
    </property>
</component>

unique="true"これは定義から明らかに欠落していcomponentます。

なぜこうなった?

4

1 に答える 1

0

Fluent NHibernate の最新バージョンを使用していますか? James Gregory (Fluent NHibernate の寄稿者) によると、動作するはずです。

// Else, try this hack:
Component(x => x.ExposureKey, m => 
{
    m.Map(x => x.AsOfDate).Not.Nullable();
    m.Map(x => x.ExposureId).Length(30).Not.Nullable();
}).SetAttribute("unique", "true");

Uniqueまた、hbm マッピング ファイルにプロパティが設定されていなくても、生成された SQL に実際にプロパティが設定されているかどうかを確認することをお勧めします (小さなバグの可能性があります)。

于 2010-10-10T18:52:14.917 に答える