私は現在、次のようにマッピングされたNHibernateで列挙を使用しています..
public enum UploadMethod
{
Java, Silverlight, Gears, Flash
}
class UploadMethodType : EnumStringType
{
public UploadMethodType() : base(typeof(UploadMethod), 255) { }
}
public class Person
{
/* Bunch of non interesting properties... */
public UploadMethod PreferredUploadMethod { get; set; }
}
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Person" lazy="false" table="[dbo].[People]">
<!-- Bunch of non interesting properties... -->
<property name="PreferredUploadMethod" type="UploadMethodType" />
</class>
</hibernate-mapping>
データベースが正規化されていないことを除いて、これは完全に機能します。People テーブルのすべての行には、4 つのテキスト文字列のいずれかを含む列があります。これを新しいテーブルに分割しましたが、NHibernate でマッピングを作成する方法がわかりません。私の最初の本能は<many-to-one>
、この列挙を独自のエンティティにしたくないということでした。基本的には、追加の列に追加するために単純な結合を行うために NHibernate が必要なだけです。
応急処置として、ビューを作成しましたが、これは正常に動作しますが、スキーマではなく、NHibernate マッピングに抽象化レイヤーを配置したいと考えています。