2012-11-27 72 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_藉口:-) –

相關問題