3
我有这种情况,不能真正起作用。基本上,我有抽象类User
和扩展类Admin
,Teacher
和LabEmployee
。这里是我的映射:作为NHibernate鉴别器的C#字符串枚举
<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”和TEACHER将是“2”。我尝试以下这篇文章:
...和定义UserTypeWrapper:
public class UserTypeWrapper: NHibernate.Type.EnumStringType
{
public UserTypeWrapper()
: base(typeof(User.UserType))
{
}
}
...但它假定枚举不鉴,那就是,我不能设置鉴别输入为UserTypeWrapper
,因为NHibernate会抛出MappingException“无法确定UserTypeWrapper的类型”。
有谁知道如何做到这一点?
任何帮助将不胜感激!谢谢!