string - 如何将枚举映射为数据库中的字符串

标签 string nhibernate fluent-nhibernate enums

我的表:

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) 类型。

最佳答案

您需要创建一个自定义 IUserType 以将枚举转换为其字符串表示形式并返回。有一个 good example in C# here和一个 example in VB.NET for working with enums here (向下滚动到实现 IUserType)。

关于string - 如何将枚举映射为数据库中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4637000/

相关文章:

unit-testing - Fluent NHibernate - HiLo 方案的 PersistenceSpecification

java - 使用 Java 从文本/字符串中获取特定 URL

c - VxWorks串口读取字符串转换乱码

java - 为什么要使用 Uribuilder 而不仅仅是字符串和连接参数呢?

c# - 在 Web 和 Windows 应用程序的类库中使用 NHibernate

nhibernate - 使用 NHibernate/Fluent Nhibernate 强制插入身份

c# - NHibernate - 根据子属性过滤掉结果

c - fgets 在输入之前读取上一行

c# - TEXT 字段中的错误 (PostgreSQL) - NHibernate 无法读取它

NHibernate 热切加载集合 + 分页