この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。
建築家
建築家
リスト
放送
茶屋
インテリジェントAI会話
.NETキャリア&テクニカルカレッジ
ちっちゃいなクズブログ
この版
利用者
Architect_Programmer_Code農業ネットワーク
»
建築家
›
プログラミング
›
.Net/C#
›
エンティティフレームワークにおける一括提出およびトランザクション処理
眺める:
23957
|
答える:
1
[出典]
エンティティフレームワークにおける一括提出およびトランザクション処理
[リンクをコピー]
クズども
掲載地 2017/04/08 22:10:01
|
|
|
Entity FrameworkにおけるSaveChanges()の使用は非常に頻繁であり、データの単一の修正や削除後にSaveChanges()を呼び出すと、影響レコードの数が返されます。
データのバッチ修正やバッチ削除を使うには、SaveChanges(false)+AcceptAllChanges()メソッドが必要です。
SaveChanges(false)は、EFがデータベースに対して操作を行う必要があることを通知するもので、メモリ上で保留中であり、必要に応じて元に戻すことができます。例えば、AcceptAllChange()のコミットが本当に成功するとEFはSaveChanges(false)の操作を元に戻します。
分散トランザクション操作を扱う際にはTransactionScopeを使う必要があり、多くの場合このように書きます:
ログインが見えます。
しかし、こうした書き方はリスクが高く、偽りです
例えば、コンテキスト1. SaveChanges() は成功しました、context2. SaveChanges() は問題があります。私たちはスコープ内にいます。 トランザクションがコミットされ、Context1が正常に実行された時点でComplete()は終了します
(私の実務では、文脈に応じて上記のことは通常ロールバック可能です。 SaveChanges() は成功しました、context2. SaveChanges() は問題があり、どちらも成功裏に実行されません!
プロジェクト内でSystem.Transactionの名前空間を参照してください。 TransactionScopeを定義することは、Scopeオブ・シングを定義することと同義であり、つまりこのトランザクションの範囲は使用の範囲内にあります。 使用範囲内で、範囲がなければ。 Complete()コマンドを実行すれば、破壊された際にスコープは自動的にすべての操作をロールバックします。 )
これが必ずしも私たちのニーズを満たすとは限りません。 もしcontext1とcontext2を同時に成功させる必要がある、またはどちらも成功しない場合は、以下のコードを使うなど、コードに小さな調整を加える必要があります。
ログインが見えます。
まずはSaveChanges(false)を使って必要なデータベース操作コマンドをデータベースに送ります。これは、context1とcontext2は実際には変更されていないことを確認するためです。トランザクションが終了して自動的にロールバックされると、どちらの変更も実際にはデータベースにコミットされないため、ロールバックは正常にできます。
先の:
EF6はトランザクション管理にDatabase.BeginTransactionを使用します
次に:
EF ORM開発および使用シリーズチュートリアル
関連記事
•
SQL Serverは本番環境でインデックスを追加します
•
Docker を使ってOracle 19c Database Serviceをインストールする
•
SQL Serverデータベーステーブルの行圧縮およびページ圧縮
•
データベースソフト削除(tombod)フィールド一意性の問題
•
SQL Serverサーバーはデータベースの整合ルールを修正します
•
SQL SERVERデータベースはデフォルトの照合ルールを修正します
•
SQL Serverのレプリケーションは、データベースを新しいデータベースにクローンします
•
MySQLデータベースのテストテーブルは1,000万件のデータを挿入します
•
[翻訳] なぜNET/C#のMySqlConnectorとMySql.Dataが前者を勝ち取るのか
•
.NET/C# はDataTablesを通じて動的にテーブル構造を作成します
閲覧したセクション
Microsoft SQL Server
Windows/Linux
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。
Mail To:help@itsvse.com