【问题标题】:Validating data contracts using business logic (entity based)使用业务逻辑验证数据合约(基于实体)
【发布时间】: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


    【解决方案1】:
    1. 使用POCOs:数据库层和业务层中的相同类/对象=业务对象
    2. 使用 DataAnnotations 为您的业务对象添加验证属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      相关资源
      最近更新 更多