Sha*_*adi 4 c# entity-framework transactions transactionscope
正如这里
使用实体框架 6 所提到的,如果我们使用以下语句开始事务, Database.BeginTransaction()
我们可以检查上下文是否有事务:
var transaction = db.Database.CurrentTransaction;
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果我们使用TrasctionScope 开始事务,这种方法不起作用:
var transactionScope = new TransactionScope();
Run Code Online (Sandbox Code Playgroud)
我只是想知道当我使用TrasctionScope时是否有任何方法可以检查上下文是否有事务?
使用实体框架 6,您可以通过两种方式使用事务:
第一种方式,使用Database.BeginTransaction()方法:
using (var context = new Context())
{
using (var dbContextTransaction = context.Database.BeginTransaction())
{
try
{
//Some EF Statments
Context.SaveChanges();
dbContextTransaction.Commit();
}
catch (Exception)
{
dbContextTransaction.Rollback();
}
}
Run Code Online (Sandbox Code Playgroud)
第二种方式,使用TransactionScope:
using (var scope = new TransactionScope())
{
//Some EF Statments
Context.SaveChanges();
scope.Complete();
}
Run Code Online (Sandbox Code Playgroud)
如果您使用第一种方式,您可以使用语句获取事务实例:
`var transaction = context.Database.CurrentTransaction;`
Run Code Online (Sandbox Code Playgroud)
另一方面,如果您使用 TrasctionScope 开始事务,则必须使用:
var transaction = System.Transactions.Transaction.Current;
获取事务实例或检查上下文是否有事务
| 归档时间: |
|
| 查看次数: |
5533 次 |
| 最近记录: |