Sql server 在sql server中解释。但问题是,当我使用entity framework 6代码从C#.net调用此过程并将错误记录到文件中时,出现了以下错误logERROR[09 Mar 11:04:24][OLMPServices.Controllers.Or

Sql server 在sql server中解释。但问题是,当我使用entity framework 6代码从C#.net调用此过程并将错误记录到文件中时,出现了以下错误logERROR[09 Mar 11:04:24][OLMPServices.Controllers.Or,sql-server,transactions,entity-framework-6,Sql Server,Transactions,Entity Framework 6,在sql server中解释。但问题是,当我使用entity framework 6代码从C#.net调用此过程并将错误记录到文件中时,出现了以下错误logERROR[09 Mar 11:04:24][OLMPServices.Controllers.OrderManagementController.OrderPlacement(D:\VSS\Order Lifecycle Management Portal\400\u S6\u Implementation and UnitaryTest\


在sql server中解释。但问题是,当我使用entity framework 6代码从C#.net调用此过程并将错误记录到文件中时,出现了以下错误logERROR[09 Mar 11:04:24][OLMPServices.Controllers.OrderManagementController.OrderPlacement(D:\VSS\Order Lifecycle Management Portal\400\u S6\u Implementation and UnitaryTest\u Phase\Source Code\OLMP\Working\OLMP.root\OLMP\OLMPServices\Controller\OrderManagementController.cs:242)]-System.Data.SqlClient.SqlException(0x80131904):执行后的事务计数表示BEGIN和COMMIT语句的数量不匹配。上一个计数=1,当前计数=0。执行后的事务计数表示BEGIN和COMMIT语句的数量不匹配。上一个计数=1,当前计数=0。将数据插入TxnOrderAddressDetails 8152行时出错:49字符串或二进制ry数据将被截断。>proc_PurchaseOrder_在OLMPBusiness.OrderManagementBusinessComponent.CreatePurchaseOrder(字符串authToken)创建在D:\VSS\Order Lifecycle Management Portal\400\u S6\u Implementation and UnitaryTest\u Phase\Source Code\OLMP\Working\OLMP.root\OLMP\OLMPBusiness\OrderManagementBusinessComponent.cs中:第198行atOLMPServices.Controller.OrderManagementController.OrderPlacement()在D:\VSS\Order Lifecycle Management Portal\400\u S6\u Implementation and UnitaryTest\u Phase\Source Code\OLMP\Working\OLMP.root\OLMP\OLMPServices\Controller\OrderManagementController.cs:line 232客户端连接ID:9bf7d1ec-ea49-49b6-a8e0-bc53d486d99d错误号:266,状态:2,类别:16您的sp被另一个事务包围
CREATE PROCEDURE [dbo].[proc_PurchaseOrder_Create](@CustomerID INT, @CustomerOrderID INT OUTPUT)          
AS          
SET NOCOUNT ON;          
--------------------------------          
DECLARE @Return_Message VARCHAR(1024)          
DECLARE @ErrorCode  INT            
DECLARE @ErrorStep  VARCHAR(200)          
DECLARE @UserID INT  
--------------------------------          
DECLARE @CustomerCartID INT,@PONumber VARCHAR(255), @CartTotalAmount NUMERIC          

BEGIN TRY          

    BEGIN TRAN                  
  -----------------------------------------------------------------------------             
  SELECT @ErrorCode = @@ERROR          
      SET NOCOUNT ON;      
  IF NOT EXISTS(SELECT CustomerCartID FROM TxnCustomerCart WHERE CustomerID = @CustomerID)           
     BEGIN          
        SET @Return_Message= 'No Cart item is available'          
           SET @ErrorCode = 1          
        END                  
        ELSE          
        BEGIN          
    -----------------------------------------------------------------------------          
    SELECT @UserID = ISNULL(UserID,0) FROM TxnCustomers WHERE CustomerID = @CustomerID      
    -----------------------------------------------------------------------------          
    SELECT @CartTotalAmount = CartTotalAmount, @CustomerCartID = CustomerCartID FROM TxnCustomerCart WHERE @CustomerID = CustomerID            
    SELECT @ErrorStep = 'Error on inserting data into TxnCustomerOrders';            
    INSERT INTO TxnCustomerOrders(CustomerID,OrderDate,OrderStatus,Ramarks,PaymentCategoryCode,CreatedBy,CreatedDatetime)          
    VALUES(@CustomerID,GETDATE(),'PRTRCVD','','Wallet',@UserID,GETDATE())            
    SET @CustomerOrderID = SCOPE_IDENTITY();          

    SELECT @ErrorStep = 'Error on generating PONumber';            
    SET @PONumber =dbo.fun_getPONumber(@CustomerID, @CustomerOrderID)          

    SELECT @ErrorStep = 'Error on inserting data into TxnPurchaseOrder';          

    INSERT INTO TxnPurchaseOrder (CustomerOrderID, PONumber, PODate, POAmount, PODocID, PODocPath, CreatedBy, CreatedDate)          
     VALUES (@CustomerOrderID, @PONumber, GETDATE(), @CartTotalAmount, REPLACE(@PONumber, '/' , '-'), REPLACE(@PONumber, '/' , '-') + '.pdf', @UserID, GETDATE())              

    SELECT  @ErrorCode  = 0, @Return_Message = 'Purchase order successfully created'          
  END       

  SET NOCOUNT OFF;         
    COMMIT TRAN               
    RETURN @ErrorCode -- =0 if success,  <>0 if failure          
END TRY           
BEGIN CATCH          
    IF @@TRANCOUNT > 0 ROLLBACK          

    SELECT @ErrorCode = ERROR_NUMBER()          
        , @Return_Message = @ErrorStep + ' '          
        + cast(ERROR_NUMBER() as varchar(20)) + ' line: '          
     + cast(ERROR_LINE() as varchar(20)) + ' '           
        + ERROR_MESSAGE() + ' > '           
        + ERROR_PROCEDURE()          

    RETURN @ErrorCode -- =0 if success,  <>0 if failure          

END CATCH  
CREATE PROCEDURE [dbo].[proc_PurchaseOrder_Create]         
AS          
SET NOCOUNT ON;          
BEGIN TRY          

    BEGIN TRAN   

    print 'before'
    select * from ##global_tmp_table; --> fatal error here
    print 'after'

    COMMIT TRAN         
END TRY           
BEGIN CATCH
    print 'catch'
    IF @@TRANCOUNT > 0 ROLLBACK          
END CATCH  
ALTER PROCEDURE [dbo].[proc_PurchaseOrder_Create]         
AS          
SET NOCOUNT ON;  
SET XACT_ABORT ON; --> the only change
BEGIN TRY          

    BEGIN TRAN   

    print 'before'
    select * from ##global_tmp_table;
    print 'after'

    COMMIT TRAN         
END TRY           
BEGIN CATCH
    print 'catch'
    IF @@TRANCOUNT > 0 ROLLBACK          
END CATCH