小编And*_*rny的帖子

在Entity Framework中调用TransactionScope内的存储过程

我使用Entity Framework 4并遇到以下问题,即在环境事务中执行存储过程.这是代码:

public void UpdateOrderRequest(IOrder order, int requestId, int userId, Fee fee)
{
    using (var tscope = new TransactionScope(TransactionScopeOption.RequiresNew))
    {
        _storedProcedureDA.UpdateOrderRequest(requestId, userId, data.ClientId, data.RequestStatus, data.Date,
                              data.Type, data.Side, data.Quantity, data.ExecInst, data.Price,
                              data.StopPrice, data.TimeInForce, data.Description, data.Target);
        var feeDa = new FeeDA();
        var dbFee = new Domain.Entities.Fee
                        {
                            OrderRequestId = requestId,
                            Identifier = fee.Id,
                            Value = fee.Value,
                        };
        feeDa.Save(dbFee);
        tscope.Complete();
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. _StoredProceduresDA和FeeDA是数据访问类,每个类使用一个DataContext实例.
  2. _storedProcedureDA.UpdateOrderRequest()方法只是包装下的 Context.ExecuteFunction<..>("AddOrderRequest",...)
  3. feeDA.Save() 将实体添加到Repository和调用中 Context.SaveChanges()
  4. 当我试图进行此调用时,我捕获以下异常: The transaction operation cannot be performed because there are pending requests working on …

.net stored-procedures entity-framework-4

5
推荐指数
1
解决办法
4880
查看次数