NHIbernate SQLQuery和枚举

时间:2012-06-21 17:46:44

标签: c# nhibernate

我正在尝试将枚举字段映射到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中的枚举?

提前感谢您的帮助。

1 个答案:

答案 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将适当地映射回枚举。