2016-12-30 172 views
2

在實體框架6中,在DbContext類下,您可以通過context.Database.CurrentTransaction獲取當前事務。然而這個API在EF.Core中似乎不可用。如何從EF.Core中的dbcontext檢索當前事務對象?如何從dbcontext獲取當前事務

+1

我無法檢查舊版本,但在EF Core v1.1.0中,您可以使用與EF6中相同的代碼。 –

+0

你可以指點我.Core文檔哪裏有DbContext這些屬性可用?我沒有看到這些。 – BKS

+1

當然,這裏你去https://docs.microsoft.com/en-us/ef/core/api/microsoft.entityframeworkcore.infrastructure.databasefacade#Microsoft_EntityFrameworkCore_Infrastructure_DatabaseFacade_CurrentTransaction –

回答

4

EF Core仍然缺少許多EF6功能,但(緩慢)正在趕上。

在這方面,我不能說早期版本,但在最新的(到目前爲止)v1.1.0 DbContext.DatabaseCurrentTransaction屬性在那裏,所以你可以使用相同的代碼,在EF6來訪問它。

-2

沒有對的DbContext的數據庫屬性檢索當前交易的方法,anbyway開始與EF核心事務,您可以添加以下代碼:

using (var transaction = dbContext.Database.BeginTransaction()) 
{ 
    try 
    { 
     // add code for ef core 

     transaction.Commit(); 
    } 
    catch (Exception ex) 
    { 
     transaction.Rollback(); 

     throw ex; 
    } 
} 

讓我知道這是有益的。

+0

我的問題不是關於如何開始,提交或回滾事務。那麼你是說EF6中有一個缺失的功能,但EF.Core中沒有這個功能? – BKS

+0

@Ivan上面提供的鏈接清楚地表明,這是EF Core的最新版本支持的。沒有冒犯,但這就是我投票的原因對你的回答不利。 – BKS

+1

不要擔心,很高興知道它在上一版EF Core中解決的問題 –