Именованные запросы компилируются, когда создается экземпляр SessionFactory (так, по сути, когда ваше приложение запускается).
Очевидное преимущество , следовательно, состоит в том, что все ваши именованные запросы проверяются в то время, а не дают сбой при выполнении. Другое преимущество заключается в том, что их легко (-иер) поддерживать - конечно, для сложных запросов.
Недостатком является то, что именованные запросы не настраиваются во время выполнения - конечно, вы можете определять / предоставлять параметры, но помимо того, что вы определили, вы получить; Вы даже не можете изменить сортировку. Другим недостатком является то, что вы не сможете изменить именованный запрос на работающем сервере приложений без перезагрузки SessionFactory .
Самый простой способ - использовать проект установки. Там вы можете просто добавить сборки из выходных данных вашего проекта в специальную папку GAC, и установщик добавит их в GAC за вас.
Если вы не используете существующую технологию установщика, "официальный" способ - через собственный API IAssemblyCache :: InstallAssembly. Но управляемую альтернативу можно найти в пространстве имен System.EnterpriseServices.Internal. Несмотря на название, это фактически открытый класс в стандартной сборке.
Попробуйте следующее:
Примеры оболочек управляемого API GAC http://blogs.msdn.com/junfeng/articles/229649.aspx