为什么Fluent NHibernate忽略了对组件的唯一约束?

时间:2010-10-10 18:17:48

标签: nhibernate fluent-nhibernate components unique-constraint

在我的地图中,我有:

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

为什么会这样?

1 个答案:

答案 0 :(得分:0)

您使用的是最新版本的Fluent NHibernate吗?根据{{​​3}}(流利的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");

检查生成的SQL是否实际上设置了Unique属性也是一件好事,即使hbm映射文件没有(可能是一个小bug)。