Entity Framework: куда поместить бизнес-логику для заполнения ASP.NET ModelState? - PullRequest
1 голос
/ 01 ноября 2011

У меня есть сайт, который использует Entity Framework для сохранения данных.Я использовал систему классов приятелей на нескольких сущностях, чтобы пометить, какие поля обязательны для заполнения, используя аннотации данных.ASP.NET MVC и его ModelState отлично работают с этим из коробки.У меня вопрос, у меня есть некоторая проверка, которая немного более сложна - есть ли способ, которым я могу включить эту бизнес-логику в класс приятелей таким образом, чтобы ModelState заполнялся правильно?было бы Если поле X имеет одно значение, то поле Y обязательно.

Логика может быть более сложной, чем эта.

Спасибо,

Ответы [ 2 ]

4 голосов
/ 01 ноября 2011

Этого можно достичь, написав пользовательских атрибутов валидатора . Но лично я предпочитаю инфраструктуру FluentValidation.NET вместо аннотаций данных, поскольку она обеспечивает более краткий и простой способ выражения пользовательской логики проверки даже в сложных сценариях.

3 голосов
/ 01 ноября 2011

Вы должны заставить сами сущности реализовать IValidatableObject, а затем использовать итератор для yield return a ValidationResult для каждой ошибки.

В качестве альтернативы, вы можете сделать пользовательский уровень класса ValidationAttribute ипримените это к классу приятеля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...