私は C# と EF 4.0 を使用しています。私のアプリケーションには、データベースに接続し、必要なすべての操作 (挿入、更新、削除、および情報の一貫性を確保するためのロジック) を実行するリポジトリがあります。
場合によっては、同じ情報を持つ多くのレジスタを更新する必要がある可能性があるため、一度に多くのレジスタを更新できる方法があれば、より快適です。この方法では、レジスターに問題がある場合 (一意の制約、存在しない FK など)、次のレジスターで再試行してエンティティを切り離すことができます。
ただし、この種の方法にはいくつかの問題があります。
1.- EF がどのようにトランザクションであるか、レジスタの 1 つだけに問題がある場合、それらのいずれかが更新されます。
2.- レジスタのみを更新すると、その理由が FK が存在しないこと、一意の制約などであるかどうかを分析できます。メソッドが多くのレジスタを更新し、さまざまな問題を抱えた多くのレジスタがある場合、問題の理由をユーザーに通知できないか、分析してユーザーに通知することがより困難になります。
3.-おそらく、サーバーのCPUのリソースをより長く使用するため、メソッドに時間がかかり、他のユーザーは一部のリソースが解放されるまで待たなければならない可能性があります。メソッドが非常に高速であることは事実ですが、1 つのレジスターのみを更新できるメソッドを使用すると、より多くのユーザー間でリソースをより適切に共有できます (より良いマルチタスク?)。
利点:
1.- データ コンテキストを 1 つだけ作成するので、更新するレジスタごとに作成して破棄する必要がないため、より効率的だと思います (これは、1 つだけを更新するメソッドを N 回呼び出すと発生します)すぐに登録してください)。
したがって、私の質問は、多くのレジスタを更新する必要がある場合、パラメータとしてレジスタのリストを受け取り、それらすべてを一度に更新する 1 つのメソッド、または一度に 1 つのレジスタしか更新できず、クライアントであるメソッドを持つ方がよいということです。メソッドを N 回呼び出す必要があるのは誰ですか?
ありがとう。