私は実際には動作しないこのケースを持っています。基本的に抽象クラスUser
、拡張クラスAdmin
、Teacher
、LabEmployee
があります。ここに私のマッピングは、次のとおりです。今C#String enumをNHibernateディスクリミネータとして
<class name="User" table="users" dynamic-update="true" dynamic-insert="true" select-before-update="false">
<id name="Id">
<column name="id" sql-type="bigint"/>
<generator class="identity"/>
</id>
<discriminator column="user_type" type="String"/>
...
some irrelevant properties (username, password, email etc.)
...
<subclass name="Admin" discriminator-value="ADMIN"/>
<subclass name="LabEmloyee" discriminator-value="LABEMPLOYEE"/>
<subclass name="Teacher" discriminator-value="TEACHER"/>
</class>
が、私は本当にこの列挙型を使用したい
public enum UserType
{
ADMIN, LABEMPLOYEE, TEACHER
}
私は整数にNHibernateは、デフォルトでマップの列挙型は、ADMINが「0」になるようことを理解し、LABEMPLOYEEは次のようになります"1"であり、教師は "2"である。
...とUserTypeWrapperを定義した:私はこのポスト次試してみました
public class UserTypeWrapper: NHibernate.Type.EnumStringType
{
public UserTypeWrapper()
: base(typeof(User.UserType))
{
}
}
...しかし、列挙型はつまり、私は弁別を設定することはできません、弁別ではないことを前提としていNHibernateがMappingExceptionをスローするとUserTypeWrapper
とタイプしてください: "UserTypeWrapperの型を決定できませんでした"。
これを達成する方法を知っている人はいますか?
ご協力いただければ幸いです!ありがとう!