Как сопоставить Enum в NHibernate для правильного создания поля БД при экспорте схемы? - PullRequest
0 голосов
/ 03 июня 2009

Я видел несколько вопросов, связанных с правильным отображением типа enum с помощью NHibernate.

Эта статья Джеффа Палермо показала мне, как сделать это правильно, создав собственный тип. Я использую Schema Export для создания моей БД во время моих циклов разработки, но этот метод нарушает мой оператор экспорта. Есть ли способ указать тип столбца при экспорте?

Вот мой код перечисления:

public enum OperatorCode
{
    CodeA,
    CodeB,
    CodeC,
    CodeD
}

Вот мой пользовательский тип:

public class OperatorCodeType:EnumStringType
{
    public OperatorCodeType():base(typeof(OperatorCode),20)
    {

    }
}

Вот моя собственность в моем файле отображения:

<property name="OperatorCode" column="OperatorCode" type="OperatorCodeType"  />

И, наконец, вот мое объявление класса для этого свойства:

public virtual OperatorCode OperatorCode { get; set; }

Возможно ли это сделать?

1 Ответ

1 голос
/ 03 июня 2009

Я не проверял его, но вы можете использовать объявление Column в свойстве, чтобы указать тип sql. Пример из документов:

<property name="Foo" type="String">
    <column name="foo" length="64" not-null="true" sql-type="text"/>
</property>

Конечно, это строка, но вы можете попробовать ее с типом OperatorCodeType, столбцом sql-type как text или nvarchar или любым другим.

Если вы попробуете, дайте мне знать? Сейчас нет рядом с моей машинкой.

...