mirror of https://github.com/abpframework/abp.git
14 changed files with 130 additions and 42 deletions
@ -1,9 +1,5 @@ |
|||
{ |
|||
"ConnectionStrings": { |
|||
"Default": "Server=localhost;Database=AbpDesk;Trusted_Connection=True;", |
|||
"Modules": { |
|||
"Module1": "Module1-ConnString", //TODO: Remove this dummy definitions |
|||
"Module2": "Module2-ConnString" |
|||
} |
|||
"Default": "Server=localhost;Database=AbpDesk;Trusted_Connection=True;" |
|||
} |
|||
} |
|||
|
|||
@ -1,9 +1,5 @@ |
|||
{ |
|||
"ConnectionStrings": { |
|||
"Default": "Server=localhost;Database=AbpDesk;Trusted_Connection=True;", |
|||
"Modules": { |
|||
"Module1": "Module1-ConnString", //TODO: Remove this dummy definitions |
|||
"Module2": "Module2-ConnString" |
|||
} |
|||
"Default": "Server=localhost;Database=AbpDesk;Trusted_Connection=True;" |
|||
} |
|||
} |
|||
|
|||
@ -0,0 +1,15 @@ |
|||
using System.Collections.Generic; |
|||
|
|||
namespace Volo.Abp.Data |
|||
{ |
|||
public class ConnectionStringsDictionary : Dictionary<string, string> |
|||
{ |
|||
private const string DefaultConnectionStringName = "Default"; |
|||
|
|||
public string Default |
|||
{ |
|||
get { return this[DefaultConnectionStringName]; } |
|||
set { this[DefaultConnectionStringName] = value; } |
|||
} |
|||
} |
|||
} |
|||
@ -1,16 +0,0 @@ |
|||
using System.Collections.Generic; |
|||
|
|||
namespace Volo.Abp.Data |
|||
{ |
|||
public class ConnectionStringsOption |
|||
{ |
|||
public string Default { get; set; } |
|||
|
|||
public Dictionary<string, string> Modules { get; set; } |
|||
|
|||
public ConnectionStringsOption() |
|||
{ |
|||
Modules = new Dictionary<string, string>(); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,33 @@ |
|||
using System; |
|||
using System.Linq; |
|||
using System.Reflection; |
|||
|
|||
namespace Volo.Abp.Data |
|||
{ |
|||
public class DatabaseNameAttribute : Attribute |
|||
{ |
|||
public string Name { get; } |
|||
|
|||
public DatabaseNameAttribute(string name) |
|||
{ |
|||
Name = name; |
|||
} |
|||
|
|||
public static string GetDatabaseName<T>() |
|||
{ |
|||
return GetDatabaseName(typeof(T)); |
|||
} |
|||
|
|||
public static string GetDatabaseName(Type type) |
|||
{ |
|||
var typeInfo = type.GetTypeInfo(); |
|||
var databaseNameAttribute = typeInfo.GetCustomAttributes<DatabaseNameAttribute>().FirstOrDefault(); |
|||
if (databaseNameAttribute != null) |
|||
{ |
|||
return databaseNameAttribute.Name; |
|||
} |
|||
|
|||
return type.FullName; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,10 @@ |
|||
namespace Volo.Abp.Data |
|||
{ |
|||
public static class ConnectionStringResolverExtensions |
|||
{ |
|||
public static string Resolve<T>(this IConnectionStringResolver resolver) |
|||
{ |
|||
return resolver.Resolve(DatabaseNameAttribute.GetDatabaseName<T>()); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,53 @@ |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Shouldly; |
|||
using Volo.Abp.Modularity; |
|||
using Volo.Abp.TestBase; |
|||
using Xunit; |
|||
|
|||
namespace Volo.Abp.Data |
|||
{ |
|||
public class ConnectionStringResolver_Tests : AbpIntegratedTest<ConnectionStringResolver_Tests.TestModule> |
|||
{ |
|||
private const string DefaultConnString = "default-value"; |
|||
private const string Database1Name = "Database1"; |
|||
private const string Database1ConnString = "database-1-value"; |
|||
private const string Database2Name = "Database2"; |
|||
|
|||
private readonly IConnectionStringResolver _connectionStringResolver; |
|||
|
|||
public ConnectionStringResolver_Tests() |
|||
{ |
|||
_connectionStringResolver = ServiceProvider.GetRequiredService<IConnectionStringResolver>(); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Should_Get_Default_ConnString_By_Default() |
|||
{ |
|||
_connectionStringResolver.Resolve().ShouldBe(DefaultConnString); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Should_Get_Specific_ConnString_IfDefined() |
|||
{ |
|||
_connectionStringResolver.Resolve(Database1Name).ShouldBe(Database1ConnString); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Should_Get_Default_ConnString_If_Not_Specified() |
|||
{ |
|||
_connectionStringResolver.Resolve(Database2Name).ShouldBe(DefaultConnString); |
|||
} |
|||
|
|||
public class TestModule : AbpModule |
|||
{ |
|||
public override void ConfigureServices(IServiceCollection services) |
|||
{ |
|||
services.Configure<DbConnectionOptions>(options => |
|||
{ |
|||
options.ConnectionStrings.Default = DefaultConnString; |
|||
options.ConnectionStrings[Database1Name] = Database1ConnString; |
|||
}); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue