Entity Framework 5 レコード更新のベスト プラクティス
Entity Framework 5 でレコードを更新する場合、開発者は複数の方法の選択に直面することがよくありますが、それぞれの方法には長所と短所があります。この記事では、3 つの一般的な方法とその制限事項を検討し、最終的に最適な解決策を提供します。
方法 1: 元のレコードをロードし、属性を 1 つずつ更新します
この方法では、最初に元のレコードをロードしてから、変更された各属性を手動で更新する必要があります。このアプローチでは、変更するプロパティを柔軟に指定できますが、2 つのデータベース クエリ (読み込み用と更新用に 1 つ) が必要です。
方法 2: 元のレコードをロードし、変更された値を設定します
より効率的なアプローチは、CurrentValues.SetValues
を使用して、変更されたプロパティのみを更新することです。ただし、このアプローチではビューにすべてのレコード プロパティが含まれている必要があるため、機密データのセキュリティに影響を与える可能性があります。
方法 3: 更新されたレコードを添付し、ステータスを変更済みに設定します
データベース クエリの数を最小限に抑えるには、更新されたレコードを追加し、ステータスを Modified
に設定します。このメソッドに必要なクエリは 1 つだけですが、変更するプロパティを指定することはできず、ビューにすべてのプロパティが含まれている必要もあります。
最良の解決策
属性指定、最小化されたビュー、および単一データベースクエリの効率を考慮するために、次の方法をお勧めします:
コード例:
<code class="language-csharp">db.Users.Attach(updatedUser); var entry = db.Entry(updatedUser); entry.Property(e => e.Email).IsModified = true; // 其他需要修改的属性 db.SaveChanges();</code>
このソリューションは、まず更新されたレコードを追加し、次に特定の属性の IsModified
フラグを変更します。このようにして、単一のデータベース クエリの効率を維持しながら、期待される属性のみが更新されることが保証されます。
以上がエンティティフレームワーク5のレコードを更新する最も効率的な方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。