Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Первый скажет «всё равно хочу провести» и получит сообщение «документ уже проведён»?
А что если условия распространяются не только на свойства документа, но нужно рыться в табличной части или как-то проверять ассоциированные документы?
Кстати, какие есть pros/cons относительно использования генераторов?
Да, это неизбежное зло, на которое мы пошли.
Метод заново полностью выполняется и пересчитывается, так что он будет оперировать уже новыми данными(теми, которые он видит в транзакции, конечно)
Вот это не очень понял, если честно
public IEnumerable<Interactive> KillAllHumans(Human[] humans)
{
foreach (var human in humans)
{
if (human.Name == Context.Current.User.Name)
{
yield return new Confirmation(guid, "Вы были обнаружены в списке человеков. Все равно убить?");
}
human.Kill();
yield break;
}
}
Ну вот как-то так:
public void Execute(IFormContext<Order> context)
selfSession.afterHandleRequest();
selfSession.sendResponse;
selfSession.modalSleeping := true;
while selfSession.modalSleeping and not selfSession.isFinished do
selfThread.Handle;
selfSession.ModalSleeping := true;
selfSession.modalSleeping := false;
if web.ModalDialog('Warning', 'Delete all files?', WTQuestion, WBYesNo) <> wmrYes then
halt;
Вообще-то, исключения — они немного для другого сделаны.
(а еще не надо внутри транзакции ждать ответа пользователя, блокировки будут страшны)
Это называется bad design.
данные между проверкой и обработкой изменятся
var text = string.Forma("Лимит превышен на {0} рублей", summ);
var e1 = someGuid.CombineWithHashOf(text);
ExceptionHelper.Interactive(e1, text);
А как гарантировать, что данные между первой и второй транзакцией не менялись? (не блокируя их при этом)
Не использовать исключения для (нормативного) управления потоком выполнения.
А как гарантировать, что данные между первой и второй транзакцией не менялись? (не блокируя их при этом)
<рецензия></рецензия>var errors = (from o in context.FormData where o.Value != null select string.Format("Error {0} must be null", o.Key)).ToList();
if (errors.Count > 0)
{
ExceptionHelper.Interactive(Guid.NewGuid(), "У вас тут ошибочка вышла" + errors.ToString(", "));
}
Такие вещи нормальными людьми делаются через серверные конечные автоматы
Невозможное — возможно. Stateful поведение в Stateless приложении!