2010-10-29 70 views
0

我所有的服务方法都使用Facade来与业务逻辑交谈。这意味着在外观中,DataContracts(我正在使用WCF)被转换为实体(实体框架),然后传递到业务层。我现在面临的问题是,我想在业务逻辑中加入某些验证逻辑,但这不会将数据契约转换为实体。使用业务逻辑验证数据合同(基于实体)

示例:我的外观上有一个名为CreateUser()的方法。传入的UserDataContract具有一个属性Name。这是数据库中的一个必填字段,因此实体框架已将不可空属性置于此成员之上(准确地说,是[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)])。我可以将验证逻辑放入业务层,在那里没有问题。但是,当在名称字段中带有空的UserDataContract被翻译时,会抛出ConstraintException:实体框架禁止我在UserEntity类的Name字段中设置空值。

什么是避免这种情况的优雅方法? 我可以以某种方式删除Entity Framework中该字段的检查(将nullable属性设置为true将使EF抱怨映射到不可空列)。 是否有一些模式可用于将验证机制引入业务层并从外墙使用此模式?

我有多个外墙,同一实体有多个数据合同。但仍然是一个实体类型和一个业务层。

我在这里使用.Net 4.0。

谢谢!

回答

1
  1. 使用POCOs:同一类/对象数据库层和业务层=业务对象
  2. 添加例如使用DataAnnotations属性验证您的业务对象。
+0

谢谢,使用属性在我的情况下看起来很有用...... – 2010-10-29 15:10:53