架构考虑,WCF,EF(STE)

时间:2012-09-05 13:55:51

标签: c# wcf entity-framework architecture wcf-data-services

我有WCF服务,它从EF公开STE。

[OperationContract, FaultContract(typeof(WarningFault)),  FaultContract(typeof(ErrorFault))]
    MyEntity GetMyEntityByID(int id);

    [OperationContract, FaultContract(typeof(WarningFault)), FaultContract(typeof(ErrorFault))]
    MyEntity SaveMyEntity(MyEntity myEntity);

场景看起来像这样:

  1. 客户端从WCF获取实体(GetMyEntityByID)
  2. 客户端对此实体进行一些更改
  3. 客户致电SaveMyEntity
  4. WCF服务中的
  5. 是附加到上下文并保存到db的此特定实体。 (并且在保存之前还有一些自定义验证工作。)
  6. 由于STE,这工作得非常好......

    但我注意到,这并不是一个好的模式。 (在EF 5.0中,STE标记为不推荐)

    我应该采用什么方法代替?如果我理解正确,WCF数据服务不适合这种工作,因为它们只暴露实体。并且在客户端管理保存,验证等。

1 个答案:

答案 0 :(得分:2)

我建议您使用分离的实体。通过主键从数据库重新加载对象,并仅复制客户端能够修改的字段。不要在服务之外公开数据库上下文