【发布时间】:2011-05-02 11:11:12
【问题描述】:
我所有的服务方法都使用外观来与业务逻辑对话。这意味着在外观中,DataContracts(我正在使用 WCF)被转换为实体(实体框架),然后传递给业务层。我现在面临的问题是我想将某些验证逻辑放入业务逻辑中,但这会阻止将数据合约转换为实体。
示例:我的外观上有一个名为 CreateUser() 的方法。传入的 UserDataContract 有一个属性 Name。这是数据库中的必填字段,因此 Entity Framework 在此成员上方放置了一个不可为空的属性(确切地说是[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)])。我可以将验证逻辑放在业务层,那里没有问题。但是,当转换 Name 字段中为 null 的 UserDataContract 时,会引发 ConstraintException:Entity Framework 禁止我在 UserEntity 类的 Name 字段中设置 null 值。
有什么优雅的方法可以避免这种情况? 我能否以某种方式删除实体框架中对该字段的检查(将可为空属性设置为 true 将使 EF 抱怨映射到不可为空的列)。 是否有一些模式可以用来将验证机制引入业务层并从外观使用它?
我有多个外观,同一个实体有多个数据合同。但仍然是一种实体类型和一种业务层。
我在这里使用 .Net 4.0。
谢谢!
【问题讨论】:
标签: .net wcf entity-framework-4