Эффективность NHibernate

Обязательно проверьте, используете ли вы
- task: DownloadBuildArtifacts@0
и , а не
bool.fetch-build-artifact.fetch-build-artifact-task.fetch-build-artifact@3

То, что я в конечном итоге использовал:

- task: DownloadBuildArtifacts@0
    displayName: 'Download Build Artifacts'
    inputs:
      buildType: specific
      project: '[project GUID omitted here]'
      pipeline: 159
      artifactName: drop.develop
    env:
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)
6
задан Andrew Bullock 19 December 2008 в 16:43
поделиться

7 ответов

Быстрый ответ - то, что ORM проверит имя свойства и преобразует его к SQL-запросу, который сделает Вас имя =.... Таким образом, это не загрузит всех клиентов в память для поиска имени.

8
ответ дан 8 December 2019 в 13:03
поделиться

Nhibernate идет с несколькими различными способами запросить базу данных. Будьте в спящем режиме использует Sql как синтаксис под названием HQL, который является SQL на объектах. Также это может сделать поиск примером, где Вы создаете объект и заполняете critea, Вы хотите, затем в спящем режиме, вытащит объект из DB, которые имеют те же значения свойств.

взгляните здесь, это доберется, Вы до лета скорости Nhibernate повреждения 2 и 2a ответите в большей глубине

HTH

кости

4
ответ дан 8 December 2019 в 13:03
поделиться

ЕСЛИ Вы действительно волнуетесь, о каких запросах NHibernate генерирует, выполненный SQL Server Profiler и узнает то, что выполняет или настраивает, он регистрируется, и включите его вывод SQL. Это отобразит все SQL-операторы туда, где Вы настраиваете его log4net.

3
ответ дан 8 December 2019 в 13:03
поделиться

NHibernate создаст подобный запрос к Вашему примеру, используете ли Вы HQL или ICriteria, но он на самом деле сделает Вас один лучше. Это создаст параметрический sql оператор так, чтобы запрос мог кэшироваться в SQL Server.

ICriteria чрезвычайно гибок, однако существует что-то вроде кривой обучения для становления опытным в нем. Я также рекомендую лету скринкастов nhibernate набрать скорость быстро.

1
ответ дан 8 December 2019 в 13:03
поделиться

Несколько просто достигнуть производительности класса "предприятия" с NHibernate.

На основе свойства и отображений отношения в объекте ORM создаст определенный запрос для той выборки. Если свойство будет отмечено как ленивая загрузка затем, то это будет исключено и когда к свойству получат доступ в рамках сессии, последующая выборка доберется только что часть недостающих данных. Таким образом, если бы мы должны были включить профилировщика SQL, то переведенный запрос хотел бы что-то вроде этого

Select cust.Address, cust.Email from customers cust where cust.Name = "fred"

Также важный глубина Вашего запроса. Мы можем ограничить количество записей, которые возвращаются (важный для больших наборов данных) при помощи запросов HQL та страница данные в зависимости от Вашего поставщика БД..., пока они работают с синтаксическим анализатором HQL. Можно также установить FetchMode или CollectionFetchMode на Ваших отображениях отношения, которые будут работать, соединяет для выбора из нескольких таблиц в единственном взаимодействии.

При использовании SQL-сервера, можно включить sp_execsql, который выполнит все выборки через сохраненный proc для быстрого повышения производительности.

Для получения дополнительной информации существует большая статья о Проекте Кода, который предоставляет подробную информацию о том, как улучшить производительность NHibernate в Вашем приложении. При использовании архитектуры для обслуживания широкого круга запросов задержка может быть большим беспокойством. Проверьте этот поток для некоторых деталей об этом.

1
ответ дан 8 December 2019 в 13:03
поделиться

Да, NHibernate должен быть одним из самых производительных ORM там, я использовал в одном проекте, и это было довольно прохладно. О LINQ к NHibernate можно хотеть проверить эту статью. Существует кривая обучения (NHQL и ICriteria) и если Вы хотите сделать переход, будет трудным сначала, но затем все инвестированное время возвращается Вам.Надеюсь, это поможет.

1
ответ дан 8 December 2019 в 13:03
поделиться

Разработка Linq to SQL была прекращена для Linq to Entities. Вам тоже стоит попробовать.

0
ответ дан 8 December 2019 в 13:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: