Проверка контрактов данных с использованием бизнес-логики (на основе сущностей) - PullRequest
0 голосов
/ 29 октября 2010

Все мои методы обслуживания используют фасад для общения с бизнес-логикой. Это означает, что на фасаде DataContracts (я использую WCF) преобразуются в сущности (Entity Framework), а затем передаются на бизнес-уровень. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я хочу добавить определенную логику проверки в бизнес-логику, но это не позволяет переводить контракт данных в сущность.

Пример: у меня на фасаде есть метод CreateUser (). Входящий UserDataContract имеет свойство Name. Это обязательное поле в базе данных, поэтому Entity Framework поместил атрибут not-nullable над этим членом (точнее, [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]). Я могу поставить логику проверки на бизнес-уровне, никаких проблем там нет. Но когда UserDataContract с нулем в поле «Имя» переводится, возникает ConstraintException: Entity Framework запрещает мне устанавливать нулевое значение в поле «Имя» класса UserEntity.

Какой элегантный способ избежать этого? Могу ли я как-то убрать проверку этого поля в Entity Framework (если установить для свойства nullable значение true, EF будет жаловаться на сопоставление с необнуляемым столбцом). Есть ли какая-то модель, которую я могу использовать, чтобы внедрить механизм проверки в бизнес-уровень и использовать его с фасадов?

У меня есть несколько фасадов с несколькими контрактами данных для одного и того же объекта. Но все же один тип сущности и один бизнес-уровень.

Я использую .Net 4.0 здесь.

Спасибо!

1 Ответ

1 голос
/ 29 октября 2010
  1. Использование POCOs : один и тот же класс / объект на уровне базы данных и бизнес-уровне = бизнес-объект
  2. Добавление атрибутов проверки в ваши бизнес-объекты с использованием, например, DataAnnotations .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...