4

有人知道如何使用 objectContext SaveChanges 方法(EntityFramework 5)的相同事务调用 StoredProc 吗?

目标是应用对象更改并调用存储的 Proc,该 Proc 在 DB 上执行一些“魔术”,但是,如果出现问题(使用 SaveChanges 或 SP 执行),则根本不会提交任何更改。

4

1 回答 1

3

脚步:

  1. 创建上下文
  2. 从上下文中获取连接
  3. 创建事务(TransactionScope)
  4. 打开连接(将连接登记到在 3 中创建的环境事务中,并防止上下文关闭连接)
  5. 做 SaveChanges()
  6. 执行你的存储过程
  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();
        }
    }
}
于 2012-11-28T03:56:18.217 回答