私たちのシステムでは、オブジェクトをデータベースにマッピングするために nhibernate を使用しています。私たちのオブジェクトの1つにフィールドがあり、これはenumとして表されます(キーと値を持つenum、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 列) にマップする方法はありますか?