2017-10-19 101 views
0

我想創建兩個保存的事務之一:一個通過實體框架的上下文,另一個使用sql命令。使用上下文和sql命令創建事務C#

我如何獲得一個連接,將它傳遞給另一個並創建一個事務?

例如:

var ctx = ApplicationContext(); 
var tr = ctx.Transaction.where(x=>x.id=1); 
tr.status = 5; 
ctx.SaveChanges(); 

using (SqlConnection connection = new SqlConnection(ConnectionString)) 
{ 
    using (SqlCommand command = new SqlCommand(query, connection)) 
    { //set query and params 
    connection.Open(); 
    command.ExecuteNonQuery(); 

    } 
+0

你在這裏使用的是什麼versione的EntityFramework的再次簡化代碼? – Steve

+0

實體框架6 – piris

回答

0

我不能在此刻進行測試,但你可以看看的DbContext的 Database property。在這裏你可以找到獲取交易對象和連接本身的屬性和方法。

您可以將它們用於您的命令

var ctx = ApplicationContext(); 
using(var tr = ctx.Database.BeginTransaction()) 
{ 
    ctx.SaveChanges(); 

    // Not sure if at this point the connection is still open 
    // or not disposed. You need to experiment here. 

    using (SqlCommand command = new SqlCommand(query, ctx.Database.Connection)) 
    { 
     command.ExecuteNonQuery(); 
     tr.Commit(); 
    } 
} 

但在這一點上,你會發現一個名爲ExecuteSqlCommand方法的存在,可能會

+1

我會盡力,謝謝。在這裏找到一個稍微不同的答案:https://msdn.microsoft.com/en-us/library/dn456843%28v=vs.113%29.aspx?f=255&MSPPError=-2147217396它首先創建連接 – piris