将int列映射到nhibernate中的bool属性的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将int列映射到nhibernate中的bool属性的问题相关的知识,希望对你有一定的参考价值。

我在域对象中有一个int列映射为布尔类型。一切都看起来很好,直到今天我们注意到在bool属性上做QueryOver时,生成的实际SQL不符合SqlServer的喜好。

queryOver如下所示:

.Where(Restrictions.On<OrderLine>(ol => _orderLineAlias.Approved).IsLike(true));

那个SQL是,

select * from Orderline where Approved like 'true'

希望你能在这里看到问题,因为列的数据类型是int,这不会给我任何回报。不能更改DB数据类型或Entity类的数据类型。

答案

你有没有尝试过:

    QueryOver<OrderLine>().Where(x => x.Approved == true)

?

另一答案

您是否在配置文件中尝试了以下几行?

<property name="hibernate.query.substitutions">true 1, false 0</property> 

Link to NH documentation on this topic

以上是关于将int列映射到nhibernate中的bool属性的问题的主要内容,如果未能解决你的问题,请参考以下文章

在 NHibernate 中查询未映射的列

NHibernate 映射 - 带有被重用列的用户类型?

如何通过代码将 Id 映射到 NHibernate 映射中的私有支持字段?

在 NHibernate 映射中为未使用的列提供默认默认值

使用 Fluent NHibernate 有条件地将两列映射到一个字段

Fluent NHibernate - 如何将外键列映射为属性