[英]Transactional methods in Asp.net
我以前在Grails中工作過,在Grails中與Spring一樣,默認情況下服務方法是事務性的,如果需要,我們可以通過注釋來更改它,但是現在我在ASP.net中工作,我想知道是否有東西類似於。 或者,我們必須顯式打開事務並在每種方法結束時將其關閉。 我正在使用實體框架...
使用EntityFramework,當您在DbContext
實例上調用SaveChanges
(或SaveChangesAsync
)時,所有待處理的數據存儲操作都將在單個工作單元(事務)中進行。
如果要將工作分成多個事務,則每次要提交事務時都希望調用SaveChanges
(或異步等效項)。
這是一篇關於EF 使用事務中的事務的很好的文章(EF6及更高版本)
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.SqlClient;
using System.Linq;
using System.Transactions;
namespace TransactionsExamples
{
class TransactionsExample
{
static void StartOwnTransactionWithinContext()
{
using (var context = new BloggingContext())
{
using (var dbContextTransaction = context.Database.BeginTransaction())
{
try
{
context.Database.ExecuteSqlCommand(
@"UPDATE Blogs SET Rating = 5" +
" WHERE Name LIKE '%Entity Framework%'"
);
var query = context.Posts.Where(p => p.Blog.Rating >= 5);
foreach (var post in query)
{
post.Title += "[Cool Blog]";
}
context.SaveChanges();
dbContextTransaction.Commit();
}
catch (Exception)
{
dbContextTransaction.Rollback();
}
}
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.