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 Data Servicesはエンティティを公開するだけなので、この種の作業には適していません。また、保存、検証などはクライアント側で管理されます。

4

1 に答える 1

2

デタッチされたエンティティで作業することをお勧めします。主キーを使用してデータベースからオブジェクトをリロードし、クライアントが変更できるフィールドのみをコピーします。サービスの外部にデータベースコンテキストを公開しないでください

于 2012-09-05T20:18:32.613 に答える