2017-10-19 204 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