我有一个数据库列,其类型为number(1)
,它没有非空约束。
在我的实体中,我拥有一个简单的bool
属性。 该属性的值为false
,在数据库中为NULL
。这是预期和想要的。将可为空的列映射为不可为空的bool,并确保查询工作
现在的问题是查询不能以相同的方式工作。
session.Query<Entity>(x => !x.Property)
仅返回列中具有0
的那些实体,而不是具有NULL
的那些实体。
有什么办法告诉NHibernate做到这一点?
我有一个数据库列,其类型为number(1)
,它没有非空约束。
在我的实体中,我拥有一个简单的bool
属性。 该属性的值为false
,在数据库中为NULL
。这是预期和想要的。将可为空的列映射为不可为空的bool,并确保查询工作
现在的问题是查询不能以相同的方式工作。
session.Query<Entity>(x => !x.Property)
仅返回列中具有0
的那些实体,而不是具有NULL
的那些实体。
有什么办法告诉NHibernate做到这一点?
sql中的“!NULL”不正确。 Null未定义,不等于false。你可以检查x.Property == null。
请再次阅读该问题。我的属性是'bool',不能是'null'。 – 2012-07-11 13:20:47
那你为什么不把它变成“布尔”呢? – 2012-07-11 13:38:24
因为它只能是真或假。 NULL表示与false相同。 – 2012-07-11 14:00:44
'UPDATE table SET column = 0 WHERE column IS NULL'将是最简单的方法。但是,您可以尝试使用具有2列(具有相同名称)的IUserType并将它们都设置在NullSafeSet中。 – Firo 2012-07-31 06:01:16
@Firo:感谢您的评论。我已经与更新。 – 2012-07-31 20:40:05