Browse Source

Use IOptionsSnapshot in DefaultConnectionStringResolver to detect changes in appsettings file.

pull/81/head
Halil İbrahim Kalkan 10 years ago
parent
commit
8ead16f389
  1. 35
      src/AbpDesk/AbpDesk.ConsoleDemo/AbpDesk/ConsoleDemo/Program.cs
  2. 2
      src/Volo.Abp.EntityFrameworkCore/Microsoft/Extensions/DependencyInjection/AbpEfCoreServiceCollectionExtensions.cs
  3. 2
      src/Volo.Abp.MultiTenancy/Volo/Abp/Data/MultiTenancy/MultiTenantConnectionStringResolver.cs
  4. 4
      src/Volo.Abp/Volo/Abp/Data/DefaultConnectionStringResolver.cs

35
src/AbpDesk/AbpDesk.ConsoleDemo/AbpDesk/ConsoleDemo/Program.cs

@ -1,5 +1,6 @@
using System; using System;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Volo.Abp;
namespace AbpDesk.ConsoleDemo namespace AbpDesk.ConsoleDemo
{ {
@ -13,20 +14,12 @@ namespace AbpDesk.ConsoleDemo
{ {
application.Initialize(scope.ServiceProvider); application.Initialize(scope.ServiceProvider);
application RunDemo(application);
.ServiceProvider
.GetRequiredService<TicketLister>()
.List();
application Console.WriteLine("Press ENTER to run again...");
.ServiceProvider Console.ReadLine();
.GetRequiredService<UserLister>()
.List();
application RunDemo(application);
.ServiceProvider
.GetRequiredService<BlogPostLister>()
.List();
Console.WriteLine(); Console.WriteLine();
Console.WriteLine("Press ENTER to exit..."); Console.WriteLine("Press ENTER to exit...");
@ -35,5 +28,23 @@ namespace AbpDesk.ConsoleDemo
application.Shutdown(); application.Shutdown();
} }
} }
private static void RunDemo(AbpApplication application)
{
application
.ServiceProvider
.GetRequiredService<TicketLister>()
.List();
application
.ServiceProvider
.GetRequiredService<UserLister>()
.List();
application
.ServiceProvider
.GetRequiredService<BlogPostLister>()
.List();
}
} }
} }

2
src/Volo.Abp.EntityFrameworkCore/Microsoft/Extensions/DependencyInjection/AbpEfCoreServiceCollectionExtensions.cs

@ -15,7 +15,7 @@ namespace Microsoft.Extensions.DependencyInjection
.AddLogging(); .AddLogging();
services.TryAddTransient<TDbContext>(); services.TryAddTransient<TDbContext>();
services.TryAddSingleton(DbContextOptionsFactory.Create<TDbContext>); services.TryAddTransient(DbContextOptionsFactory.Create<TDbContext>);
var options = new AbpDbContextRegistrationOptions(); var options = new AbpDbContextRegistrationOptions();
optionsBuilder?.Invoke(options); optionsBuilder?.Invoke(options);

2
src/Volo.Abp.MultiTenancy/Volo/Abp/Data/MultiTenancy/MultiTenantConnectionStringResolver.cs

@ -14,7 +14,7 @@ namespace Volo.Abp.Data.MultiTenancy
private readonly ITenantConnectionStringStore _tenantConnectionStringStore; private readonly ITenantConnectionStringStore _tenantConnectionStringStore;
public MultiTenantConnectionStringResolver( public MultiTenantConnectionStringResolver(
IOptions<DbConnectionOptions> options, IOptionsSnapshot<DbConnectionOptions> options,
IMultiTenancyManager multiTenancyManager, IMultiTenancyManager multiTenancyManager,
ITenantConnectionStringStore tenantConnectionStringStore) ITenantConnectionStringStore tenantConnectionStringStore)
: base(options) : base(options)

4
src/Volo.Abp/Volo/Abp/Data/DefaultConnectionStringResolver.cs

@ -7,9 +7,9 @@ namespace Volo.Abp.Data
{ {
public class DefaultConnectionStringResolver : IConnectionStringResolver, ITransientDependency public class DefaultConnectionStringResolver : IConnectionStringResolver, ITransientDependency
{ {
private readonly DbConnectionOptions _options; //TODO: Use IOptionsSnapshot? private readonly DbConnectionOptions _options;
public DefaultConnectionStringResolver(IOptions<DbConnectionOptions> options) public DefaultConnectionStringResolver(IOptionsSnapshot<DbConnectionOptions> options)
{ {
_options = options.Value; _options = options.Value;
} }

Loading…
Cancel
Save