NHibernate CreateSQLQuery数据从位转换为布尔错误

时间:2010-05-06 16:26:29

标签: c# mysql nhibernate

我在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'.

这种转换无法完成似乎很奇怪。

对任何想法都会很有意义。

感谢。

1 个答案:

答案 0 :(得分:0)

不需要做任何lambdas(即使它们很有趣!)。如果Client是映射类,则可以使用核心NHibernate方法CreateCriteria<>。这很简单:

session
    .CreateCriteria<Client>()
    .List<Client>();

如果Client没有映射,那么我会创建一个属性SuperUser_Long并用SuperUser

包裹它