NHibernate CreateSQLQuery

我试图用NH CreateSQLQuery方法获取一些数据

IList LCollection = sess.CreateSQLQuery(@"select * from some_schema.logistic") .SetResultTransformer(Transformers.AliasToBean(typeof(Logistic))) .List(); 

后勤课是

 public class Logistic { public virtual long? l_id { get; set; } public virtual long? carrier_id { get; set; } ... } 

制图

 public class LogisticMap : ClassMap { public LogisticMap() { Table("some_chema.logistic"); Id(x => x.l_id).GeneratedBy.Sequence("some_chema.logistic_sq"); Map(x => x.carrier_id); ... } } 

但我有错误

 The type System.Decimal can not be assigned to a property of type System.Nullable`1[System.Int64] setter of MyNamespase.Logistic.l_id 

任何想法可能是错的?

当您要检索轻量级DTO而不是实体时,将使用AliasToBean转换器。 (例如,如果你有一个概览屏幕,它只显示每个实体的一些基本信息,那么最好使用DTO并在NHibernate中创建一个使用AliasToBean变换器的查询,以便NH知道它不应该检索完整的实体)。

如果要使用SQL查询检索实体,则必须执行以下操作:

 var query = sess.CreateSQLQuery(@"select {l.*} from some_schema.logistic as l"); query.AddEntity ("l", typeof(Logistic)); return query.List(); 

但是,我想知道为什么你想在这种情况下使用本机SQL查询? 为什么不使用HQLICriteriaQueryOver