Формула Nhibernate добавляет слово шаблона в ключевое слово sql - PullRequest
3 голосов
/ 26 июля 2010

Я использую следующую формулу в моем файле отображения:

выберите верхний 1 SI.ID из таблицы SI с помощью (nolock), где SI.GUID = GUID и SI.IsArchive = '0'

генерируется sql: выберите верхний 1 SI.ID из таблицы SI с помощью (this_.nolock) где SI.GUID = this_.GUID и SI.IsArchive = '0'

Nolock - это ключевое слово.Я не хочу, чтобы он был квалифицирован этим _ (шаблонное ключевое слово).

как я могу изменить это поведение?

Ответы [ 2 ]

0 голосов
/ 27 июля 2010

Вы можете попытаться преобразовать логику формулы в определяемую пользователем функцию (предполагая, что это сервер sql здесь) и вызвать ее непосредственно из формулы. Вы даже можете сделать функцию частью генерации вашей схемы, используя отображение объекта базы данных.

Например:

    CREATE FUNCTION [dbo].[GetMyValue] ( @entityId INT ) 
    RETURNS INT
    AS BEGIN
      DECLARE @RtnValue AS INT 
      SELECT @RtnValue = top 1 SI.ID from Table SI with(nolock) where SI.id = @entityId AND SI.IsArchive = '0'
      RETURN @RtnValue
    END

И карта как таковая

formula="dbo.GetMyValue(id)"

Теоретически это должно предотвратить любую замену ключевых слов.

0 голосов
/ 26 июля 2010

Может быть возможно обойти это с помощью подстановок запросов в вашей конфигурации nhibernate; например:

<property name="hibernate.query.substitutions">mynolock nolock</property>

И карта как таковая:

select top 1 SI.ID from Table SI with(mynolock) where SI.GUID = GUID And SI.IsArchive = '0'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...