我有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);
场景看起来像这样:
由于STE,这工作得非常好......
但我注意到,这并不是一个好的模式。 (在EF 5.0中,STE标记为不推荐)
我应该采用什么方法代替?如果我理解正确,WCF数据服务不适合这种工作,因为它们只暴露实体。并且在客户端管理保存,验证等。
答案 0 :(得分:2)
我建议您使用分离的实体。通过主键从数据库重新加载对象,并仅复制客户端能够修改的字段。不要在服务之外公开数据库上下文