nHibernate 3.0.0.4000在查询中处理bool的方式不同?

时间:2011-02-21 07:56:29

标签: sqlite nhibernate

2 个答案:

答案 0 :(得分:1)

菲尔是对的。 Query / LINQ提供程序存在问题。

此Criteria / QueryOver API完美运行:

var items = session.QueryOver<InvoiceDetail>()
        .Where(i => i.Customer == AddressedToCustomer)
        .And(i => i.IsCreditNote != addInvoices)
        .OrderBy(i => i.DueDate).Asc
        .ThenBy(i => i.InvoiceNumber).Asc
        .List();

更令人惊讶的是,提供商的开发人员只是将问题/错误视为非问题,甚至没有正确地查看它们。我打算将所有Query<>来电替换为QueryOver<>来电,以确保无误。对于像nHibernate这样的项目,这真的很可惜,特别考虑像我这样热爱linq的开发人员。

答案 1 :(得分:0)

一些想法:

如果您正在使用SQL服务器将列类型更改为位以获取布尔值。

尝试查询替换:

3.5.4. Query Language Substitution

You may define new NHibernate query tokens using query.substitutions. For example:
query.substitutions true=1, false=0
would cause the tokens true and false to be translated to integer literals in the generated SQL.
query.substitutions toLowercase=LOWER
would allow you to rename the SQL LOWER function.