我所有的服务方法都使用Facade来与业务逻辑交谈。这意味着在外观中,DataContracts(我正在使用WCF)被转换为实体(实体框架),然后传递到业务层。我现在面临的问题是,我想在业务逻辑中加入某些验证逻辑,但这不会将数据契约转换为实体。使用业务逻辑验证数据合同(基于实体)
示例:我的外观上有一个名为CreateUser()的方法。传入的UserDataContract具有一个属性Name。这是数据库中的一个必填字段,因此实体框架已将不可空属性置于此成员之上(准确地说,是[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
)。我可以将验证逻辑放入业务层,在那里没有问题。但是,当在名称字段中带有空的UserDataContract被翻译时,会抛出ConstraintException:实体框架禁止我在UserEntity类的Name字段中设置空值。
什么是避免这种情况的优雅方法? 我可以以某种方式删除Entity Framework中该字段的检查(将nullable属性设置为true将使EF抱怨映射到不可空列)。 是否有一些模式可用于将验证机制引入业务层并从外墙使用此模式?
我有多个外墙,同一实体有多个数据合同。但仍然是一个实体类型和一个业务层。
我在这里使用.Net 4.0。
谢谢!
谢谢,使用属性在我的情况下看起来很有用...... – 2010-10-29 15:10:53