有这样的DTO:
public class CustomerDTO
{
public int Id{get; set;}
public int? Reference {get; set;}
}
我如何从
获取它var q =_session.CreateSQLQuery("SELECT Id, Reference FROM customers")
如果我使用
q.SetResultTransformer(Transformers.AliasToBean<CustomerDTO>)
我得到以下异常:
NHibernate.PropertyAccessException:类型System.Int32不能 分配给System.Nullable`1 [System.Int32] setter类型的属性 of Customer.Reference
答案 0 :(得分:3)
试试这个:
var customers = _session.CreateSQLQuery("SELECT Id, Reference FROM customers")
.AddScalar("Id", NHibernateUtil.Int32)
.AddScalar("Reference", NHibernateUtil.Int32)
.SetResultTransformer(Transformers.AliasToBean<CustomerDTO>())
.List<CustomerDTO>();
参考here。
答案 1 :(得分:1)
我们必须映射一个可以为空的枚举,然后得到:
Object of type 'System.Int32' cannot be converted to type 'System.Nullable`1[ExampleEnumType]'.
修复是使用:
.AddScalar("EnumTypeSqlAlias", NHibernateUtil.Enum(typeof(ExampleEnumType)))