0

我有从 EF 公开 STE 的 WCF 服务。

[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 服务中,此特定实体附加到上下文并保存到 db。(并且在保存之前还有一些自定义验证工作。)

由于STE,这工作得很好..

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

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

4

1 回答 1

2

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

于 2012-09-05T20:18:32.613 回答