Все мои методы обслуживания используют фасад для общения с бизнес-логикой. Это означает, что на фасаде 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 здесь.
Спасибо!