@@ -28,6 +28,7 @@ namespace Microsoft.Extensions.DependencyInjection | |||||
builder.Services.Configure(actionOptions); | builder.Services.Configure(actionOptions); | ||||
var sqlServerOptions = new SqlServerOptions(); | var sqlServerOptions = new SqlServerOptions(); | ||||
sqlServerOptions.DbContextType = typeof(TContext); | |||||
actionOptions(sqlServerOptions); | actionOptions(sqlServerOptions); | ||||
builder.Services.AddSingleton(sqlServerOptions); | builder.Services.AddSingleton(sqlServerOptions); | ||||
@@ -44,6 +45,6 @@ namespace Microsoft.Extensions.DependencyInjection | |||||
return builder; | return builder; | ||||
} | } | ||||
} | } | ||||
} | } |
@@ -28,8 +28,7 @@ namespace DotNetCore.CAP.EntityFrameworkCore | |||||
/// <summary> | /// <summary> | ||||
/// Gets or sets the <see cref="CapSentMessage"/> of Messages. | /// Gets or sets the <see cref="CapSentMessage"/> of Messages. | ||||
/// </summary> | /// </summary> | ||||
public DbSet<CapSentMessage> CapSentMessages { get; set; } | |||||
public DbSet<CapSentMessage> CapSentMessages { get; set; } | |||||
public DbSet<CapQueue> CapQueue { get; set; } | public DbSet<CapQueue> CapQueue { get; set; } | ||||
@@ -48,6 +47,7 @@ namespace DotNetCore.CAP.EntityFrameworkCore | |||||
/// </param> | /// </param> | ||||
protected override void OnModelCreating(ModelBuilder modelBuilder) | protected override void OnModelCreating(ModelBuilder modelBuilder) | ||||
{ | { | ||||
//_sqlServerOptions = new SqlServerOptions(); | |||||
modelBuilder.HasDefaultSchema(_sqlServerOptions.Schema); | modelBuilder.HasDefaultSchema(_sqlServerOptions.Schema); | ||||
modelBuilder.Entity<CapSentMessage>(b => | modelBuilder.Entity<CapSentMessage>(b => | ||||
@@ -67,6 +67,7 @@ namespace DotNetCore.CAP.EntityFrameworkCore | |||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) | protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) | ||||
{ | { | ||||
// optionsBuilder.UseSqlServer("Server=192.168.2.206;Initial Catalog=Test;User Id=cmswuliu;Password=h7xY81agBn*Veiu3;MultipleActiveResultSets=True"); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -32,7 +32,7 @@ namespace DotNetCore.CAP | |||||
} | } | ||||
public static async Task Publish(this ICapPublisher publisher, string topic, string content, IDbConnection connection,IDbTransaction transaction) | |||||
public static async Task Publish(this ICapPublisher publisher, string topic, string content, IDbConnection connection, IDbTransaction transaction) | |||||
{ | { | ||||
var message = new CapSentMessage | var message = new CapSentMessage | ||||
{ | { | ||||
@@ -108,14 +108,14 @@ WHERE StateName = '{StatusName.Enqueued}'"; | |||||
private async Task<IFetchedMessage> FetchNextMessageCoreAsync(string sql, object args = null) | private async Task<IFetchedMessage> FetchNextMessageCoreAsync(string sql, object args = null) | ||||
{ | { | ||||
FetchedMessage fetchedJob = null; | |||||
FetchedMessage fetchedMessage = null; | |||||
var connection = _context.GetDbConnection(); | var connection = _context.GetDbConnection(); | ||||
var transaction = _context.Database.CurrentTransaction; | var transaction = _context.Database.CurrentTransaction; | ||||
transaction = transaction ?? await _context.Database.BeginTransactionAsync(IsolationLevel.ReadCommitted); | transaction = transaction ?? await _context.Database.BeginTransactionAsync(IsolationLevel.ReadCommitted); | ||||
try | try | ||||
{ | { | ||||
fetchedJob = | |||||
fetchedMessage = | |||||
(await connection.QueryAsync<FetchedMessage>(sql, args, transaction.GetDbTransaction())) | (await connection.QueryAsync<FetchedMessage>(sql, args, transaction.GetDbTransaction())) | ||||
.FirstOrDefault(); | .FirstOrDefault(); | ||||
} | } | ||||
@@ -125,7 +125,7 @@ WHERE StateName = '{StatusName.Enqueued}'"; | |||||
throw; | throw; | ||||
} | } | ||||
if (fetchedJob == null) | |||||
if (fetchedMessage == null) | |||||
{ | { | ||||
transaction.Rollback(); | transaction.Rollback(); | ||||
transaction.Dispose(); | transaction.Dispose(); | ||||
@@ -133,8 +133,8 @@ WHERE StateName = '{StatusName.Enqueued}'"; | |||||
} | } | ||||
return new EFFetchedMessage( | return new EFFetchedMessage( | ||||
fetchedJob.MessageId, | |||||
fetchedJob.Type, | |||||
fetchedMessage.MessageId, | |||||
fetchedMessage.Type, | |||||
connection, | connection, | ||||
transaction); | transaction); | ||||
} | } | ||||
@@ -31,5 +31,7 @@ namespace DotNetCore.CAP.EntityFrameworkCore | |||||
/// Default is <see cref="DefaultMigrationsHistoryTableName"/>. | /// Default is <see cref="DefaultMigrationsHistoryTableName"/>. | ||||
/// </summary> | /// </summary> | ||||
public string MigrationsHistoryTableName { get; set; } = DefaultMigrationsHistoryTableName; | public string MigrationsHistoryTableName { get; set; } = DefaultMigrationsHistoryTableName; | ||||
public Type DbContextType { get; set; } | |||||
} | } | ||||
} | } |