我正在使用Castle ActiveRecord,它在下面使用了NHibernate,我已经为我的一个实体添加了一个如下公式的属性:
[Property(Formula = "CAST((select count(*) from [User] as u where u.Email = FriendEmail) as bit)")]
public bool FriendRegistered { get; set; }
问题是现在对此实体的任何查询都会失败,因为NHibernate在公式中this_.
之前添加了User
。这导致以下SQL:
CAST((select count(*) from this_.[User] as u where u.Email = this_.FriendEmail) as bit) as formula0_7_
我尝试使用不同的表名仅用于测试,并且工作正常,所以我猜它只会影响共享保留字的表,例如“User”。
我尝试使用反引号来逃避它,也尝试删除“from”和“[User]”之间的空格,并尝试添加模式(dbo。)都没有成功。
这听起来像NHibernate中的一个错误,我发现这个类似的错误报告:https://nhibernate.jira.com/browse/NH-1617
我想我的问题是:这个或某个设置是否有解决方法,甚至是我不知道的处理方法?
我们正在使用NH 2.1.2和MsSql2008Dialect方言。
提前致谢
安迪
答案 0 :(得分:1)
在JIRA问题结束时,Fabio在方言中提到RegisterKeyword("int")
,所以我也尝试添加RegisterKeyword("bit")
。
答案 1 :(得分:1)
作为解决方法,我最终创建了一个名为AllUsers
的视图,该视图只执行select * from [User]
,然后将我的公式更新为AllUsers
而不是[User]
。
我知道有点黑客攻击,但这可能会帮助那些做得很快的人。