在我们的系统中,我们使用 nhibernate 将对象映射到数据库中。在我们的一个对象中,我们有字段,它表示为枚举(带有键和值的枚举,fe
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" />
...
之后更改排序开始在应用程序中正常工作(记录按枚举键排序),但在数据库中创建新对象后,仅保存枚举键(StatusName 字段)和枚举值(Status 字段)的值,它不保存。
有没有办法通过使用 nhibernate 配置将枚举的键和值映射到数据库列(Status 和 StatusName 列)?