Почему Fluent NHibernate игнорирует мое уникальное ограничение для компонента? - PullRequest
5 голосов
/ 10 октября 2010

На моей карте есть:

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 голосов
/ 10 октября 2010

Используете ли вы последнюю версию Fluent NHibernate? Согласно Джеймсу Грегори (Свободный участник 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 (это может быть небольшая ошибка).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...