1

我正在尝试将枚举字段映射到 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。如何将数据库的字符串字段转换为 SQLQuery 中的枚举?

在此先感谢您的帮助。

4

1 回答 1

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

于 2012-06-21T19:45:46.267 回答