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

为什么Fluent NHibernate忽略了我对组件的独特约束?

  •  5
  • jason  · 技术社区  · 14 年前

    在我的地图上我有:

    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 回复  |  直到 14 年前
        1
  •  0
  •   Community holdenweb    7 年前

    James Gregory (流利的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映射文件没有(可能是一个小错误)。