如何阻止NHibernate(通过ActiveRecord)添加this_。到公式中的表名

时间:2010-09-20 13:42:21

标签: sql nhibernate castle-activerecord

我正在使用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方言。

提前致谢

安迪

2 个答案:

答案 0 :(得分:1)

在JIRA问题结束时,Fabio在方言中提到RegisterKeyword("int"),所以我也尝试添加RegisterKeyword("bit")

答案 1 :(得分:1)

作为解决方法,我最终创建了一个名为AllUsers的视图,该视图只执行select * from [User],然后将我的公式更新为AllUsers而不是[User]

我知道有点黑客攻击,但这可能会帮助那些做得很快的人。