欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何理解EFCore事務提交

本篇內容主要講解“如何理解EF Core事務提交”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何理解EF Core事務提交”吧!

創(chuàng)新互聯(lián)建站是網(wǎng)站建設技術企業(yè),為成都企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設,網(wǎng)站設計,網(wǎng)站制作,網(wǎng)站改版等技術服務。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。十多年品質,值得信賴!

控制事務

可以使用 DbContext.Database API 開始、提交和回滾事務。 以下示例顯示了在單個事務中執(zhí)行的兩個 SaveChanges 操作以及一個  LINQ 查詢:

using var context = new BloggingContext(); using var transaction = context.Database.BeginTransaction();  try {     context.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/dotnet" });     context.SaveChanges();      context.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/visualstudio" });     context.SaveChanges();      var blogs = context.Blogs         .OrderBy(b => b.Url)         .ToList();      // Commit transaction if all commands succeed, transaction will auto-rollback     // when disposed if either commands fails     transaction.Commit(); } catch (Exception) {     // TODO: Handle failure }

雖然所有關系數(shù)據(jù)庫提供程序都支持事務,但在調用事務 API 時,可能會引發(fā)其他提供程序類型或不執(zhí)行任何操作。

使用 System.Transactions

如果需要跨較大作用域進行協(xié)調,則可以使用環(huán)境事務。

using (var scope = new TransactionScope(     TransactionScopeOption.Required,     new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted })) {     using var connection = new SqlConnection(connectionString);     connection.Open();      try     {         // Run raw ADO.NET command in the transaction         var command = connection.CreateCommand();         command.CommandText = "DELETE FROM dbo.Blogs";         command.ExecuteNonQuery();          // Run an EF Core command in the transaction         var options = new DbContextOptionsBuilder<BloggingContext>()             .UseSqlServer(connection)             .Options;          using (var context = new BloggingContext(options))         {             context.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/dotnet" });             context.SaveChanges();         }          // Commit transaction if all commands succeed, transaction will auto-rollback         // when disposed if either commands fails         scope.Complete();     }     catch (Exception)     {         // TODO: Handle failure     } }

還可以在顯式事務中登記。

using (var transaction = new CommittableTransaction(     new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted })) {     var connection = new SqlConnection(connectionString);      try     {         var options = new DbContextOptionsBuilder<BloggingContext>()             .UseSqlServer(connection)             .Options;          using (var context = new BloggingContext(options))         {             context.Database.OpenConnection();             context.Database.EnlistTransaction(transaction);              // Run raw ADO.NET command in the transaction             var command = connection.CreateCommand();             command.CommandText = "DELETE FROM dbo.Blogs";             command.ExecuteNonQuery();              // Run an EF Core command in the transaction             context.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/dotnet" });             context.SaveChanges();             context.Database.CloseConnection();         }          // Commit transaction if all commands succeed, transaction will auto-rollback         // when disposed if either commands fails         transaction.Commit();     }     catch (Exception)     {         // TODO: Handle failure     } }

System.Transactions 的限制

  1. EF Core 依賴數(shù)據(jù)庫提供程序以實現(xiàn)對 System.Transactions 的支持。 如果提供程序未實現(xiàn)對 System.Transactions  的支持,則可能會完全忽略對這些 API 的調用。 SqlClient 支持它。

  2. 自 .NET Core 2.1 起,System.Transactions 實現(xiàn)不包括對分布式事務的支持,因此不能使用 TransactionScope  或 CommittableTransaction 來跨多個資源管理器協(xié)調事務。

到此,相信大家對“如何理解EF Core事務提交”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

分享題目:如何理解EFCore事務提交
URL地址:http://www.chinadenli.net/article22/peshjc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供電子商務企業(yè)建站用戶體驗App開發(fā)搜索引擎優(yōu)化網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司