2012-02-20 2 views
9

При взгляде на наши запросы от NHibernate ясно, что псевдоним столбца несовместим, что проблема для производительности, когда план выполнения SQL-сервера видит тот же запрос, что и другой запрос, из-за несогласованного псевдонима столбца.NHibernate несогласованный псевдоним столбца sql

Примером может быть что-то вроде этого:

SELECT this_.Id as Id44_0_ FROM dbo.[Foos] this_ 

SELECT this_.Id as Id43_0_ FROM dbo.[Foos] this_ 

Есть ли способ, мы можем сделать последовательный псевдоним столбца?

Мы используем Fluent NHibernate с автоматическим отображением

+3

Где код, показывающий это? –

+0

NHibernate использовал эти псевдонимы с каждым запросом, который вы делаете, поэтому какой код вы хотите увидеть? – Lehto

+0

Два запроса, которые приводят к этим операторам SQL. –

ответ

1

При желании, установив проекцию вы можете получить пользовательское имя в качестве псевдонима в запросе следующим

Projections.Property("candidate.Name"), "CandidateName"); 

How to use NHibernate Projections to retrieve a collection

+0

Затем нам нужно будет изменить 80 классов, и это неприемлемо, но спасибо. – Lehto

0

Я никогда не видел так же NH для генерации разных SQL во время работы вашего приложения. Думаю, вам не нужно беспокоиться о производительности из-за этого. (За исключением случая, когда вам нужно часто запускать и останавливать свое приложение.)

Любые изменения, которые необходимо выполнить, чтобы все запросы SQL (даже после изменения модели данных) были болезненными, а не абсолютно хорошими решениями, и я думаю, не приемлемо для вас.

Смежные вопросы