Meine Tabelle:Wie Enum als String in der Datenbank abzubilden
create table MyTable (
Id int identity(1,1) not null,
MyStatus char(2) not null
)
insert into MyTable(MyStatus) select 'A'
Klasse und Enum:
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);
}
Wenn ich den folgenden Test ausführen, bekomme ich System.FormatException: Die Eingabezeichenfolge hatte kein richtiges Format ...
[Test]
public void Blah()
{
MyTable myTable = Session.Get<MyTable>(1);
Assert.That(myTable.MyStatus, Is.EqualTo(MyTableStatus.A));
}
Was ist der richtige Weg, um eine Enumeration der String-Repräsentation in der Datenbank zuzuordnen?
Bearbeiten - Ich schreibe meine Anwendung auf einer vorhandenen Datenbank, die ich nicht leicht ändern kann, weil es auch von anderen Anwendungen verwendet wird. Also einige Felder in der Datenbank (die ich in meiner Anwendung als enums darstellen möchte) sind vom Typ int und einige vom Typ char (2).
Möchten Sie auch wissen, einschließlich der Arbeit mit einer Datenbank, die Strings und Ints für verschiedene enums verwendet. (Ich habe es immer mit Ints funktioniert) – Phill