Как отобразить перечисление как строку в базе данных

Моя таблица:

create table MyTable (
    Id int identity(1,1) not null,
    MyStatus char(2) not null
)
insert into MyTable(MyStatus) select 'A'

Класс и перечисление:

public class MyTable
{
    public virtual int Id { get; set; }
    public virtual MyTableStatus MyStatus { get; set; }
}

public enum MyTableStatus
{
    A,
    B
}

Отображение:

public MyTableMap()
{
    Id(x => x.Id);
    Map(x => x.MyStatus);
}

Когда я выполняю следующий тест, я получаю System.FormatException: входная строка была в неправильном формате ...

[Test]
public void Blah()
{
    MyTable myTable = Session.Get<MyTable>(1);
    Assert.That(myTable.MyStatus, Is.EqualTo(MyTableStatus.A));
}

Как правильно сопоставить перечисление с его строковым представлением в базе данных?

Изменить - я пишу свое приложение в существующей базе данных, которую я не могу легко изменить, потому что она также используется другими приложениями. Итак, некоторые поля в базе данных (которые я хотел бы представить как перечисления в моем приложении) имеют тип int, а некоторые - тип char (2).

7
задан sventevit 9 January 2011 в 10:34
поделиться