Я использую 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_
Я пытался использовать другое имя таблицы только для тестирования, и это работало нормально, поэтому я думаю, что это влияет только на таблицы с общим зарезервированным словом, например, "Пользователь".
Я пытался использовать обратные метки, чтобы избежать его, также пытался удалить пробел между "from" и "[User]" и пытался добавить схему (dbo.) Все безуспешно.
Это звучит как ошибка в NHibernate, и я нашел этот отчет об ошибке, который похож: https://nhibernate.jira.com/browse/NH-1617
Я предполагаю, что мой вопрос: есть ли обходной путь к этому или к настройке где-нибудь, или даже способ справиться с этим, о котором я не знаю?
Мы используем NH 2.1.2 и диалект MsSql2008.
Заранее спасибо
Andy