我正在尝试将枚举字段映射到dto属性。我正在使用PositionalToBeanResultTransformer,如下所示:
PositionalToBeanResultTransformer trans = new PositionalToBeanResultTransformer(typeof(DTOClass), new string[] { "Id", "EnumProperty" });
var data = Sesion.CreateSQLQuery("SELECT Id, EnumField FROM Table")
.AddScalar("EnumField", NHibernateUtil.Custom(typeof(Enumerador)))
.SetResultTransformer(trans)
.List<DTOClass>();
public class DTOClass
{
public int Id { get; set; }
public Enumerador EnumProperty { get; set; }
}
DTOClass没有映射,所以我不能使用AddEntity(),而AddScalar()代码会抛出一个我必须实现NHibernate.UserTypes.IUserType的错误。 如何将DB的字符串字段转换为SQLQuery中的枚举?
提前感谢您的帮助。
答案 0 :(得分:0)
如果您没有使用AutoMapping,请在ClassMap中添加类似的行,如下所示:
Table("MyClass");
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.Type).CustomType(typeof(Enumerations.MyType));
public virtual int Id { get; set; }
public virtual Enumerations.MyType Type { get; set; }
我通常将我的枚举作为整数存储在数据库中,而ClassMap将适当地映射回枚举。