Обязательно проверьте, используете ли вы
- 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)
Быстрый ответ - то, что ORM проверит имя свойства и преобразует его к SQL-запросу, который сделает Вас имя =.... Таким образом, это не загрузит всех клиентов в память для поиска имени.
Nhibernate идет с несколькими различными способами запросить базу данных. Будьте в спящем режиме использует Sql как синтаксис под названием HQL, который является SQL на объектах. Также это может сделать поиск примером, где Вы создаете объект и заполняете critea, Вы хотите, затем в спящем режиме, вытащит объект из DB, которые имеют те же значения свойств.
взгляните здесь, это доберется, Вы до лета скорости Nhibernate повреждения 2 и 2a ответите в большей глубине
HTH
кости
ЕСЛИ Вы действительно волнуетесь, о каких запросах NHibernate генерирует, выполненный SQL Server Profiler и узнает то, что выполняет или настраивает, он регистрируется, и включите его вывод SQL. Это отобразит все SQL-операторы туда, где Вы настраиваете его log4net.
NHibernate создаст подобный запрос к Вашему примеру, используете ли Вы HQL или ICriteria, но он на самом деле сделает Вас один лучше. Это создаст параметрический sql оператор так, чтобы запрос мог кэшироваться в SQL Server.
ICriteria чрезвычайно гибок, однако существует что-то вроде кривой обучения для становления опытным в нем. Я также рекомендую лету скринкастов nhibernate набрать скорость быстро.
Несколько просто достигнуть производительности класса "предприятия" с NHibernate.
На основе свойства и отображений отношения в объекте ORM создаст определенный запрос для той выборки. Если свойство будет отмечено как ленивая загрузка затем, то это будет исключено и когда к свойству получат доступ в рамках сессии, последующая выборка доберется только что часть недостающих данных. Таким образом, если бы мы должны были включить профилировщика SQL, то переведенный запрос хотел бы что-то вроде этого
Select cust.Address, cust.Email from customers cust where cust.Name = "fred"
Также важный глубина Вашего запроса. Мы можем ограничить количество записей, которые возвращаются (важный для больших наборов данных) при помощи запросов HQL та страница данные в зависимости от Вашего поставщика БД..., пока они работают с синтаксическим анализатором HQL. Можно также установить FetchMode
или CollectionFetchMode
на Ваших отображениях отношения, которые будут работать, соединяет для выбора из нескольких таблиц в единственном взаимодействии.
При использовании SQL-сервера, можно включить sp_execsql, который выполнит все выборки через сохраненный proc для быстрого повышения производительности.
Для получения дополнительной информации существует большая статья о Проекте Кода, который предоставляет подробную информацию о том, как улучшить производительность NHibernate в Вашем приложении. При использовании архитектуры для обслуживания широкого круга запросов задержка может быть большим беспокойством. Проверьте этот поток для некоторых деталей об этом.
Да, NHibernate должен быть одним из самых производительных ORM там, я использовал в одном проекте, и это было довольно прохладно. О LINQ к NHibernate можно хотеть проверить эту статью. Существует кривая обучения (NHQL и ICriteria) и если Вы хотите сделать переход, будет трудным сначала, но затем все инвестированное время возвращается Вам.Надеюсь, это поможет.
Разработка Linq to SQL была прекращена для Linq to Entities. Вам тоже стоит попробовать.