我在NHibernate中有点懒,并使用Session.CreateSqlQuery(...)而不是使用Lambda来做整件事。无论如何,结构我是将从(在这种情况下是MySQL)DB返回的一些类型转换为本机.Net tyes似乎存在问题。
有问题的查询看起来像这样....
IList<Client> allocatableClients =
Session.CreateSQLQuery(
"select clients.id as Id, clients.name as Name, clients.customercode as CustomerCode, clients.superclient as SuperClient, clients.clienttypeid as ClientType " +
...
...
.SetResultTransformer(new NHibernate.Transform.AliasToBeanResultTransformer(typeof(Client))).List<Client>();
SuperClient数据库中的类型是位(1),在Client对象中类型是bool。
收到的错误是:
System.ArgumentException: Object of type 'System.UInt64' cannot be converted to type 'System.Boolean'.
这种转换无法完成似乎很奇怪。
对任何想法都会很有意义。
感谢。
答案 0 :(得分:0)
不需要做任何lambdas(即使它们很有趣!)。如果Client
是映射类,则可以使用核心NHibernate方法CreateCriteria<>
。这很简单:
session
.CreateCriteria<Client>()
.List<Client>();
如果Client
没有映射,那么我会创建一个属性SuperUser_Long
并用SuperUser