首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用NHibernate持久化枚举

如何使用NHibernate持久化枚举
EN

Stack Overflow用户
提问于 2008-11-02 15:30:51
回答 5查看 32.5K关注 0票数 52

有没有办法使用NHibernate将枚举持久化到数据库中?也就是说,有一个包含枚举中每个值的代码和名称的表。

我想保留没有实体的枚举,但仍然有一个从所有其他引用实体到枚举的表的外键(枚举的int表示)。

EN

回答 5

Stack Overflow用户

发布于 2009-12-15 13:01:18

为什么你们要把这件事复杂化?这真的很简单。

映射如下所示:

代码语言:javascript
复制
<property name="OrganizationType"></property>

模型属性如下所示:

代码语言:javascript
复制
public virtual OrganizationTypes OrganizationType { get; set; }

枚举看起来像这样:

代码语言:javascript
复制
public enum OrganizationTypes
{
    NonProfit = 1,
    ForProfit = 2
}

NHibernate会自动找出所有的原因。为什么打字比你需要的多?

票数 107
EN

Stack Overflow用户

发布于 2008-11-03 02:33:58

您可以直接使用枚举类型:http://web.archive.org/web/20100225131716/http://graysmatter.codivation.com/post/Justice-Grays-NHibernate-War-Stories-Dont-Use-Int-If-You-Mean-Enum.aspx。如果你的基础类型是一个字符串,它应该使用字符串表示,如果它是数字的,它将只使用数字表示。

但你的问题措辞听起来像是在寻找不同的东西,而不是一个枚举。看起来你想要一个查找表,而不是创建一个单独的实体类。不过,我认为如果不创建一个单独的实体类,就无法做到这一点。

票数 13
EN

Stack Overflow用户

发布于 2008-11-02 17:19:24

一个简单但不是很漂亮的解决方案:

使用创建一个整型字段,并将映射文件中的映射设置为该字段。创建一个使用整型字段的公共属性。

代码语言:javascript
复制
private int myField;
public virtual MyEnum MyProperty
{
   get { return (MyEnum)myField; }
   set { myField = value; }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/256978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档