Модель предметной области - проверка бизнеса / ошибки - PullRequest
1 голос
/ 09 июня 2011

В настоящее время я занимаюсь рефакторингом своего проекта, и одна вещь, в которой я не совсем уверен, - как обрабатывать ошибки проверки бизнеса.

В настоящее время я использую класс RulesException из библиотеки xVal, я считаю, что эта библиотека больше не разрабатывается, поэтому мне, вероятно, нужно соответствующим образом обновить мой код ... вот пример одного из моих методов в домене модель:

 public virtual void AddComment(ProfileComment comment)
        {
            // ensure account is active before sending a message
            if (comment.FromAccount.AccountStatus != Enums.Common.AccountStatus.Active) throw new RulesException("", "Your account is not active");

            // throw exception if user has blocked this user
            if (HasUserBeenBlocked(comment.FromAccount)) throw new RulesException("", "User has blocked this action being performed.");

            TotalComments++;
            Comments.Add(comment);
        }

Затем я улавливаю это исключение на уровне контроллера следующим образом:

// process adding new comment
        try
        {
            accountTasks.PostProfileComment(user, account, profileComment);
        }
        catch (RulesException ex)
        {
            ex.AddModelStateErrors(ModelState);
        }

        if (!ModelState.IsValid)
        {
            return Json(ModelState.Errors());
        }

Что бы вы порекомендовали в качестве альтернативы, или вы бы порекомендовали мне придерживаться того, что у меня есть?

1 Ответ

1 голос
/ 25 июня 2011

Как и вы, мы хотели подготовиться к MVC3 и удалению xVal. Мы удалили эту зависимость, написав собственные классы RulesException, ErrorInfo и метод расширения AddModelStateErrors, добавленные в нашу платформу.

Таким образом, вам нужно только удалить xVal и разрешить пространства имен. Если у вас есть инструмент рефакторинга, это тривиально.

У меня есть гист с этими классами.

...