2012-11-27 43 views
4

的同一交易从EF SP是否有人知道如何使用ObjectContext的SaveChanges方法(5的EntityFramework)相同的交易调用StoredProc?调用的SaveChanges使用

目标是应用对象更改并调用在数据库上执行一些“魔术”的存储过程,但如果出现问题(使用SaveChanges或使用SP执行),则不会在所有。

回答

3

步骤:

  1. 创建上下文
  2. 获得从上下文
  3. 创建事务(的TransactionScope)
  4. 打开连接的连接(将争取连接到创建的环境事务3,将防止关闭上下文)的连接)
  5. 待办事项的SaveChanges(
  6. Execu TE存储过程
  7. 提交事务
  8. 关闭连接

一些代码(MyContext从派生的DbContext):

using (var ctx = new MyContext()) 
{ 
    using (var trx = new TransactionScope()) 
    { 
     var connection = ((IObjectContextAdapter)ctx).ObjectContext.Connection; 
     try 
     { 
      ctx.Entities.Add(new MyEntity() { Number = 123 }); 
      ctx.SaveChanges(); 

      ctx.Database.ExecuteSqlCommand("INSERT INTO MyEntities VALUES(300)"); 
      trx.Complete(); 
     } 
     finally 
     { 
      connection.Close(); 
     } 
    } 
} 
+0

代码示例将是一件好事? –

+2

只有我吃晚饭,现在:) – Pawel

+2

像_that's_借口:-) –

相关问题