[解決済み] Entity Framework 5 レコードを更新する
2022-03-20 03:12:49
質問
ASP.NET MVC3 環境で Entity Framework 5 内のレコードを編集/更新するさまざまな方法を調査していますが、今のところ、私が必要とするすべてのボックスをチェックするものはありません。私は理由を説明します。
3つの方法を見つけたので、その長所と短所を述べます。
方法1 - 元のレコードをロードし、各プロパティを更新する
var original = db.Users.Find(updatedUser.UserId);
if (original != null)
{
original.BusinessEntityId = updatedUser.BusinessEntityId;
original.Email = updatedUser.Email;
original.EmployeeId = updatedUser.EmployeeId;
original.Forename = updatedUser.Forename;
original.Surname = updatedUser.Surname;
original.Telephone = updatedUser.Telephone;
original.Title = updatedUser.Title;
original.Fax = updatedUser.Fax;
original.ASPNetUserId = updatedUser.ASPNetUserId;
db.SaveChanges();
}
プロフェッショナル
- 変更するプロパティを指定できる
- ビューは、すべてのプロパティを含む必要はありません
短所
- オリジナルの読み込みと更新のために、データベースに2回のクエリを実行
方法2 - オリジナルのレコードをロードし、変更された値を設定する
var original = db.Users.Find(updatedUser.UserId);
if (original != null)
{
db.Entry(original).CurrentValues.SetValues(updatedUser);
db.SaveChanges();
}
プロフェッショナル
- 変更されたプロパティのみがデータベースに送信される
短所
- ビューはすべてのプロパティを含む必要がある
- 2 x データベースへのクエリでオリジナルをロードし、それを更新する
方法3 - 更新されたレコードを添付し、EntityState.Modifiedに状態を設定します。
db.Users.Attach(updatedUser);
db.Entry(updatedUser).State = EntityState.Modified;
db.SaveChanges();
プロフェッショナル
- 更新のためのデータベースへのクエリ x 1
短所
- 変更するプロパティを指定できない
- ビューはすべてのプロパティを含む必要があります
質問
皆さんに質問です。この一連の目標を達成するためのきれいな方法はあるのでしょうか?
- 変更するプロパティを指定できる
- ビューは、すべてのプロパティを含む必要はありません(パスワードなど!)。
- 更新のためのデータベースへのクエリ x 1
かなり些細な指摘であることは理解していますが、これに対する簡単な解決策を見逃しているのかもしれません。もしそうでなければ、この方法を採用します。)
解決方法は?
探しているのは
db.Users.Attach(updatedUser);
var entry = db.Entry(updatedUser);
entry.Property(e => e.Email).IsModified = true;
// other changed properties
db.SaveChanges();
関連
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み] エンティティフレームワークのタイムアウト
-
[解決済み] Entity Frameworkにおける最速の挿入方法
-
[解決済み] Entity Framework - 複数レベルのプロパティを含める
-
[解決済み】Entity Frameworkプロバイダタイプをロードできませんでしたか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み] 2つのリストを結合する
-
[解決済み] Entity FrameworkによるUpdate Row if it Exists Else Insert Logic【終了】。