【问题标题】:How can you stop NHibernate (via ActiveRecord) adding this_. to a table name in a formula如何停止 NHibernate(通过 ActiveRecord)添加 this_.到公式中的表名
【发布时间】:2013-10-25 01:34:02
【问题描述】:

我正在使用 Castle ActiveRecord,它在下面使用 NHibernate,并且我已向我的一个实体添加了一个具有如下公式的属性:

[Property(Formula = "CAST((select count(*) from [User] as u where u.Email = FriendEmail) as bit)")]
public bool FriendRegistered { get; set; }

问题是现在对该实体的任何查询都会失败,因为 NHibernate 在公式中的 User 之前添加了 this_.。这将产生以下 SQL:

CAST((select count(*) from this_.[User] as u where u.Email = this_.FriendEmail) as bit) as formula0_7_

我尝试使用不同的表名来进行测试,但效果很好,所以我猜它只会影响共享保留字的表,例如“用户”。

我尝试使用反引号将其转义,还尝试删除“from”和“[User]”之间的空格,并尝试添加架构 (dbo.),但均未成功。

这听起来像是 NHibernate 中的一个错误,我发现了这个类似的错误报告:https://nhibernate.jira.com/browse/NH-1617

我想我的问题是:是否有解决此问题的方法或某处的设置,甚至是我不知道的处理方法?

我们正在使用 NH 2.1.2 和 MsSql2008Dialect 方言。

提前致谢

安迪

【问题讨论】:

    标签: sql nhibernate castle-activerecord


    【解决方案1】:

    在那个 JIRA 问题的结尾,Fabio 在方言中提到了RegisterKeyword("int"),所以我也尝试添加RegisterKeyword("bit")

    【讨论】:

      【解决方案2】:

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

      我知道有点小技巧,但这可能会帮助其他快速完成某项工作的人。

      【讨论】:

        猜你喜欢
        • 2013-09-10
        • 2023-03-08
        • 2015-10-21
        • 2014-06-13
        • 1970-01-01
        • 2010-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多