Browse Source

Fix SQL Server tranaction error in entityframework. #402

master
Savorboard 5 years ago
parent
commit
5df6c76c8a
1 changed files with 2 additions and 11 deletions
  1. +2
    -11
      src/DotNetCore.CAP.SqlServer/ICapTransaction.SqlServer.cs

+ 2
- 11
src/DotNetCore.CAP.SqlServer/ICapTransaction.SqlServer.cs View File

@@ -11,29 +11,22 @@ using DotNetCore.CAP.Persistence;
using DotNetCore.CAP.SqlServer.Diagnostics; using DotNetCore.CAP.SqlServer.Diagnostics;
using DotNetCore.CAP.Transport; using DotNetCore.CAP.Transport;
using Microsoft.Data.SqlClient; using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage; using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;


// ReSharper disable once CheckNamespace // ReSharper disable once CheckNamespace
namespace DotNetCore.CAP namespace DotNetCore.CAP
{ {
public class SqlServerCapTransaction : CapTransactionBase public class SqlServerCapTransaction : CapTransactionBase
{ {
private readonly DbContext _dbContext;
private readonly DiagnosticProcessorObserver _diagnosticProcessor; private readonly DiagnosticProcessorObserver _diagnosticProcessor;


public SqlServerCapTransaction( public SqlServerCapTransaction(
IDispatcher dispatcher, IDispatcher dispatcher,
IServiceProvider serviceProvider) : base(dispatcher)
DiagnosticProcessorObserver diagnosticProcessor) : base(dispatcher)
{ {
var sqlServerOptions = serviceProvider.GetService<IOptions<SqlServerOptions>>().Value;
if (sqlServerOptions.DbContextType != null)
_dbContext = serviceProvider.GetService(sqlServerOptions.DbContextType) as DbContext;

_diagnosticProcessor = serviceProvider.GetRequiredService<DiagnosticProcessorObserver>();
_diagnosticProcessor = diagnosticProcessor;
} }


protected override void AddToSent(MediumMessage msg) protected override void AddToSent(MediumMessage msg)
@@ -76,7 +69,6 @@ namespace DotNetCore.CAP
dbTransaction.Commit(); dbTransaction.Commit();
break; break;
case IDbContextTransaction dbContextTransaction: case IDbContextTransaction dbContextTransaction:
_dbContext?.SaveChanges();
dbContextTransaction.Commit(); dbContextTransaction.Commit();
break; break;
} }
@@ -93,7 +85,6 @@ namespace DotNetCore.CAP
dbTransaction.Commit(); dbTransaction.Commit();
break; break;
case IDbContextTransaction dbContextTransaction: case IDbContextTransaction dbContextTransaction:
await _dbContext.SaveChangesAsync(cancellationToken);
await dbContextTransaction.CommitAsync(cancellationToken); await dbContextTransaction.CommitAsync(cancellationToken);
break; break;
} }


Loading…
Cancel
Save