2012-07-11 42 views
1

我有一个数据库列,其类型为number(1),它没有非空约束。
在我的实体中,我拥有一个简单的bool属性。 该属性的值为false,在数据库中为NULL。这是预期和想要的。将可为空的列映射为不可为空的bool,并确保查询工作

现在的问题是查询不能以相同的方式工作。

session.Query<Entity>(x => !x.Property)仅返回列中具有0的那些实体,而不是具有NULL的那些实体。

有什么办法告诉NHibernate做到这一点?

+0

'UPDATE table SET column = 0 WHERE column IS NULL'将是最简单的方法。但是,您可以尝试使用具有2列(具有相同名称)的IUserType并将它们都设置在NullSafeSet中。 – Firo 2012-07-31 06:01:16

+0

@Firo:感谢您的评论。我已经与更新。 – 2012-07-31 20:40:05

回答

-1

sql中的“!NULL”不正确。 Null未定义,不等于false。你可以检查x.Property == null。

+0

请再次阅读该问题。我的属性是'bool',不能是'null'。 – 2012-07-11 13:20:47

+1

那你为什么不把它变成“布尔”呢? – 2012-07-11 13:38:24

+0

因为它只能是真或假。 NULL表示与false相同。 – 2012-07-11 14:00:44