【发布时间】:2013-03-05 06:04:58
【问题描述】:
在我们的系统中,我们使用 nhibernate 将对象映射到数据库中。在我们的一个对象中 我们有字段,它表示为枚举(带有键和值的枚举,f.e.
public enum Status
{
Draft = 0,
Archived = 1,
Imported = 2
}
)
因此,在我们的应用程序中,我们遇到了按枚举表示的字段对对象进行排序的问题:排序不是通过枚举的键,而是按值。为了解决这个问题,我们在数据库中为枚举的字符串键创建了附加字段,并在 nhibenate 模型文件中进行了更改:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<typedef name="StatusName" class="NHibernate.Type.EnumStringType`1[[Code.Model.Status, Code.Model]], NHibernate" />
...
<property name="Status" type="StatusName" column="StatusName" not-null="true" />
...
更改后排序开始在应用程序中正常工作(记录按枚举键排序),但在数据库中创建新对象后,仅保存枚举键(状态名称字段)和枚举值(状态字段)的值'不保存。
有没有办法通过使用 nhibernate 配置将枚举的键和值映射到数据库列(Status 和 StatusName 列)?
【问题讨论】:
标签: nhibernate nhibernate-mapping