Mi mesa:cómo asignar enumeración como cadena en la base de datos
create table MyTable (
Id int identity(1,1) not null,
MyStatus char(2) not null
)
insert into MyTable(MyStatus) select 'A'
clase y enumeración:
public class MyTable
{
public virtual int Id { get; set; }
public virtual MyTableStatus MyStatus { get; set; }
}
public enum MyTableStatus
{
A,
B
}
Mapping:
public MyTableMap()
{
Id(x => x.Id);
Map(x => x.MyStatus);
}
Cuando ejecuto la siguiente prueba, me sale System.FormatException: la cadena de entrada no estaba en un formato correcto ...
[Test]
public void Blah()
{
MyTable myTable = Session.Get<MyTable>(1);
Assert.That(myTable.MyStatus, Is.EqualTo(MyTableStatus.A));
}
¿Cuál es la forma correcta de asignar una enumeración a su representación de cadenas en la base de datos?
Editar - Estoy escribiendo mi aplicación en una base de datos existente, que no puedo modificar fácilmente porque también es utilizada por otras aplicaciones. Entonces, algunos campos en la base de datos (que me gustaría representar como enumeraciones en mi aplicación) son de tipo int y algunos de tipo char (2).
También me gustaría saber, incluido el trabajo con una base de datos que utiliza cadenas y entradas para diferentes enumeraciones. (Solo lo tengo trabajando con ints) – Phill