さて、この投稿では、呼び出しごとのモードでサービスを操作する方が効率的であるという結論に達しました。これにより、呼び出すメソッドの寿命が短いデータ コンテキストが得られます。
この例では、要素のリストのデータを変更する方法を示しています。必要なのは、エンティティの状態を変更済みに設定することだけです。
ただし、たとえば、変更と更新などの 1 つの操作をどのように行うことができますか?
1つのケースはこれです。私には本と著者がいて、クライアント アプリケーションには、著者用と本用の 2 つのデータグリッドを持つビューがあります。ユーザーは、最初のデータグリッドで著者を追加して情報を変更し、2 番目のデータグリッドで書籍に対して同じことを行うことができます。本を著者に割り当てることもできます。
私は POCO クラスを持っているので、本のリストであるプロパティを持つ著者クラスを持っています。さて、このリストに書籍を追加できます。サービス メソッド updateAuthors を呼び出すと、author クラスをパラメーターとして使用するだけで済みます。EF は書籍の処理方法を認識しています。本も渡す必要はありません。
しかし、本のリストに新しい本と存在する本があり、その情報が変更されている場合はどうなるでしょうか?
最初に言及した投稿の例では、すべてのエンティティが変更されたときにそれを行う方法が示されていますが、新しいレジスタを追加する場合は、追加する状態を設定する必要があります。エンティティが混在している場合、どうすればよいのでしょうか? これを行うためのパターンまたは何らかの方法が存在しますか? すべての本の状態を設定する必要がありますか? 自動数字を ID として使用しているため、本の状態を知ることができます。ID が 0 の場合は新規登録、それ以外の場合は変更です。
ありがとう。ダイムロック。
編集:おそらく、私の質問はあまり明確ではありません。私が知りたいのは、一度に多くのエンティティの変更を保存する方法です。たとえば、Authors、Books、Custormers があります。それらの多くの情報を追加、変更、および削除します。私のWCFクライアントには、著者の変更を保存する方法、書籍の変更を保存する方法、および顧客の変更を保存する方法があります。
私のサービスは呼び出しごとにどのように機能するか、エンティティの種類ごとに 1 つずつ、合計 3 つの呼び出しを行う必要がありますが、これは独立しています。ただし、エンティティ フレームワークを直接使用すると、多くの種類のエンティティに多くの変更を加えることができ、savechanges を 1 回呼び出すだけですべての作業が完了します。WCF エンティティと POCO エンティティで同じことを行うにはどうすればよいですか?
私はセルフ トラッキング エンティティについて読んでいます。購入すると同じ問題が発生します。Applychanges(entity) を使用できますが、間違っていなければ、1 つのエンティティにのみ変更を適用します。多くのエンティティに変更を加えた場合、N 回呼び出す必要がありますか?
ありがとう。