Как показать SQL в консоли Visual Studio, используя свободный nhibernate?

Хотя разные люди используют разные термины, в общей терминологии, «выполнить» означает пообещать в «успешном» состоянии (в отличие от «отклонения») - состояние, которое будет запускать тогда обработчики then, свисающие это.

Другими словами, вы не можете «выполнить» обещание с обещанием. Вы можете выполнить его со значением. (Кстати, термин «разрешение» обычно означает либо выполнение, либо отклонение.)

. Что вы можете сделать, это вернуть обещание от обработчика .then и это будет иметь эффект по существу заменяя оригинальное обещание возвращенным обещанием.

Вот простой пример:

asyncTask1 . then(asyncTask2) . then(processData)

, где asyncTask1 является обещанием, а asyncTask2 - функцией, которая возвращает обещание. Поэтому, когда asyncTask1 выполняется (выполнено успешно), выполняется asyncTask2, и обещание, возвращенное .then, «отменено» по обещанию asyncTask2, возвращается, так что, когда оно заканчивается, данные могут быть обработан.

Я могу сделать что-то подобное, вызвав Promise.resolve с обещанием в качестве параметра. Это немного неправильно, потому что я не разрешаю обещание в техническом смысле. Вместо этого появившееся новое обещание «заселено» обещанием, в которое я прошел. Это также бесполезно, потому что использование результата точно так же, как использование обещания, которое я прошел:

Promise.resolve(asyncTask2)

ведет себя точно так же как

asyncTask2

(предполагая, что asyncTask2 уже является обещанием, в противном случае Promise.resolve имеет эффект создания обещания, которое немедленно выполняется с переданным значением.)

Просто поскольку вы можете сдать обещание Promise.resolve, вы можете передать обещание функции resolve, предоставленной вам в качестве параметра обратного вызова конструктора обещаний. Если параметр, который вы переходите на resolve, не обещает, обещание немедленно соответствует этому значению. Однако, если параметр, который вы переходите на resolve, является другим обещанием, это обещание «берет на себя тело» обещания, которое вы строите. Иными словами, обещание, которое вы строите, начинает вести себя точно так же, как обещание, переданное resolve.

Под «вести себя точно» я имею в виду, если обещание, которое вы передаете resolve уже выполнено, обещание, которое вы строите, мгновенно выполняется с одинаковым значением. Если обещание, которое вы перешли к resolve, уже отклонено, обещание, которое вы строите, немедленно отклоняется по той же причине. Если обещание, которое вы передаете в resolve, еще не разрешено, тогда любые обработчики then, в которых вы выполняете обещание, которое вы строите, будут вызваны, если и когда будет достигнуто обещание, которое вы переходите на resolve.

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

Поэтому, если я не Отсутствие точки вашего вопроса, pickfile может быть записано как

function pickFile() {
  return new Promise(function(resolve, reject) {
    ...display the file picker...

    // Mock code to pretend the user picked a file
    window.setTimeout(function() {
        resolve('thefile');
    });
}

Я не очень четко понял ваш вопрос, так что это может быть не то, что вы хотите. Просьба уточнить, если вы хотите.

1
задан marc_s 31 March 2019 в 06:07
поделиться

1 ответ

(Свободно). NHibernate использует log4net для поддержки журналирования. Вы должны соответствующим образом настроить log4net (создать конфигурацию с помощью консоли, отладчика или трассировщика и позволить регистраторам использовать эти приложения).

Посмотрите здесь: Как записать вызовы SQL с помощью NHibernate на консоль Visual Studio?

0
ответ дан Udontknow 31 March 2019 в 06:07
поделиться
Другие вопросы по тегам:

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