2009-06-02 1 views
0

Я видел несколько вопросов, связанных с правильным отображением типа перечисления с использованием NHibernate.Как перечислить Enum в NHibernate для правильного создания поля БД при экспорте схемы?

This article от Jeff Palermo показал мне, как правильно это сделать, создавая собственный тип. Я использую Schema Export для создания моей БД во время моих циклов dev, но этот метод нарушает мою экспортную инструкцию. Есть ли способ указать тип столбца при экспорте?

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

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

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

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

Предоставленный это строка, но вы можете попробовать его с типом OperatorCodeType, колонки SQL-типа в виде текста или NVARCHAR или что-то работает.

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

+0

Chad, Это работало как шарм. Я никогда не разделял элемент свойства с узлом столбца, но я думал, что должен быть какой-то способ сделать это в файлах .hbm, так как я видел, что Fluent NHibernate позволяет вам делать это через код. Объявление столбца дает более мелкозернистый контроль. Большое спасибо! –

+0

Не проблема, рад, что я мог бы помочь. –

Смежные вопросы