Resolved #68: Rename DatabaseNameAttribute to ConnectionStringNameAttribute.

pull/81/head
Halil İbrahim Kalkan 9 years ago
parent a459413751
commit 0d9f95d050

@ -5,7 +5,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace AbpDesk.EntityFrameworkCore
{
[DatabaseName(ConnectionStrings.DefaultConnectionStringName)] //Explicitly declares this module always uses the default connection string
[ConnectionStringName(ConnectionStrings.DefaultConnectionStringName)] //Explicitly declares this module always uses the default connection string
public class AbpDeskDbContext : AbpDbContext<AbpDeskDbContext>
{
public DbSet<Ticket> Tickets { get; set; }

@ -8,14 +8,14 @@ namespace Microsoft.Extensions.DependencyInjection
{
public string ConnectionString { get; }
public string DatabaseName { get; }
public string ConnectionStringName { get; }
public DbContextOptionsBuilder DbContextOptions { get; protected set; }
public AbpDbContextConfigurationContext(string connectionString, [CanBeNull] string databaseName)
public AbpDbContextConfigurationContext(string connectionString, [CanBeNull] string connectionStringName)
{
ConnectionString = connectionString;
DatabaseName = databaseName;
ConnectionStringName = connectionStringName;
DbContextOptions = new DbContextOptionsBuilder();
}
}
@ -25,8 +25,8 @@ namespace Microsoft.Extensions.DependencyInjection
{
public new DbContextOptionsBuilder<TDbContext> DbContextOptions => (DbContextOptionsBuilder<TDbContext>)base.DbContextOptions;
public AbpDbContextConfigurationContext(string connectionString, [CanBeNull] string databaseName)
: base(connectionString, databaseName)
public AbpDbContextConfigurationContext(string connectionString, [CanBeNull] string connectionStringName)
: base(connectionString, connectionStringName)
{
base.DbContextOptions = new DbContextOptionsBuilder<TDbContext>();
}

@ -13,13 +13,13 @@ namespace Microsoft.Extensions.DependencyInjection
public static DbContextOptions<TDbContext> Create<TDbContext>(IServiceProvider serviceProvider)
where TDbContext : AbpDbContext<TDbContext>
{
var databaseName = DatabaseNameAttribute.GetDatabaseName<TDbContext>();
var connectionStringName = ConnectionStringNameAttribute.GetConnStringName<TDbContext>();
using (var scope = serviceProvider.CreateScope())
{
var connInfoResolver = scope.ServiceProvider.GetRequiredService<IConnectionStringResolver>();
var context = new AbpDbContextConfigurationContext<TDbContext>(connInfoResolver.Resolve(databaseName), databaseName);
var context = new AbpDbContextConfigurationContext<TDbContext>(connInfoResolver.Resolve(connectionStringName), connectionStringName);
var dbContextOptions = scope.ServiceProvider.GetRequiredService<IOptions<AbpDbContextOptions>>().Value;

@ -5,6 +5,6 @@ namespace Volo.Abp.Data.MultiTenancy
public interface ITenantConnectionStringStore
{
[CanBeNull]
string GetConnectionStringOrNull([NotNull] string tenantId, [CanBeNull] string databaseName);
string GetConnectionStringOrNull([NotNull] string tenantId, [CanBeNull] string connStringName);
}
}

@ -23,21 +23,21 @@ namespace Volo.Abp.Data.MultiTenancy
_tenantConnectionStringStore = tenantConnectionStringStore;
}
public override string Resolve(string databaseName = null)
public override string Resolve(string connectionStringName = null)
{
var tenant = _multiTenancyManager.CurrentTenant;
if (tenant == null)
{
return base.Resolve(databaseName);
return base.Resolve(connectionStringName);
}
var connectionString = _tenantConnectionStringStore.GetConnectionStringOrNull(tenant.Id, databaseName);
var connectionString = _tenantConnectionStringStore.GetConnectionStringOrNull(tenant.Id, connectionStringName);
if (connectionString == null)
{
return base.Resolve(databaseName);
return base.Resolve(connectionStringName);
}
//TODO: If given tenant did not specified a databaseName specific connection string, then use the default connection string for databaseName, not tenant's default database
//TODO: If given tenant did not specified a connectionStringName specific connection string, then use the default connection string for connectionStringName, not tenant's default database
return connectionString;
}

@ -4,7 +4,7 @@ namespace Volo.Abp.Data.MultiTenancy
{
public sealed class NullTenantConnectionStringStore : ITenantConnectionStringStore, ISingletonDependency
{
public string GetConnectionStringOrNull(string tenantId, string databaseName)
public string GetConnectionStringOrNull(string tenantId, string connStringName)
{
//No tenant specific connection string by default
return null;

@ -0,0 +1,36 @@
using System;
using System.Reflection;
using JetBrains.Annotations;
namespace Volo.Abp.Data
{
public class ConnectionStringNameAttribute : Attribute
{
[NotNull]
public string Name { get; }
public ConnectionStringNameAttribute([NotNull] string name)
{
Check.NotNull(name, nameof(name));
Name = name;
}
public static string GetConnStringName<T>()
{
return GetConnStringName(typeof(T));
}
public static string GetConnStringName(Type type)
{
var nameAttribute = type.GetTypeInfo().GetCustomAttribute<ConnectionStringNameAttribute>();
if (nameAttribute == null)
{
return type.FullName;
}
return nameAttribute.Name;
}
}
}

@ -1,37 +0,0 @@
using System;
using System.Reflection;
using JetBrains.Annotations;
namespace Volo.Abp.Data
{
//TODO: Rename DatabaseNameAttribute to ConnectionStringNameAttribute
public class DatabaseNameAttribute : Attribute
{
[NotNull]
public string Name { get; }
public DatabaseNameAttribute([NotNull] string name)
{
Check.NotNull(name, nameof(name));
Name = name;
}
public static string GetDatabaseName<T>()
{
return GetDatabaseName(typeof(T));
}
public static string GetDatabaseName(Type type)
{
var databaseNameAttribute = type.GetTypeInfo().GetCustomAttribute<DatabaseNameAttribute>();
if (databaseNameAttribute == null)
{
return type.FullName;
}
return databaseNameAttribute.Name;
}
}
}

@ -14,12 +14,12 @@ namespace Volo.Abp.Data
_options = options.Value;
}
public virtual string Resolve(string databaseName = null)
public virtual string Resolve(string connectionStringName = null)
{
//Get module specific value if provided
if (!databaseName.IsNullOrEmpty())
if (!connectionStringName.IsNullOrEmpty())
{
var moduleConnString = _options.ConnectionStrings.GetOrDefault(databaseName);
var moduleConnString = _options.ConnectionStrings.GetOrDefault(connectionStringName);
if (!moduleConnString.IsNullOrEmpty())
{
return moduleConnString;

@ -2,6 +2,6 @@
{
public interface IConnectionStringResolver
{
string Resolve(string databaseName = null);
string Resolve(string connectionStringName = null);
}
}

@ -4,7 +4,7 @@
{
public static string Resolve<T>(this IConnectionStringResolver resolver)
{
return resolver.Resolve(DatabaseNameAttribute.GetDatabaseName<T>());
return resolver.Resolve(ConnectionStringNameAttribute.GetConnStringName<T>());
}
}
}

@ -71,13 +71,13 @@ namespace Volo.Abp.Data.MultiTenancy
_options = options;
}
public string GetConnectionStringOrNull(string tenantId, string databaseName)
public string GetConnectionStringOrNull(string tenantId, string connStringName)
{
if (databaseName != null)
if (connStringName != null)
{
if (_options.Value.ConnectionStrings.ContainsKey(tenantId + "#" + databaseName))
if (_options.Value.ConnectionStrings.ContainsKey(tenantId + "#" + connStringName))
{
return _options.Value.ConnectionStrings[tenantId + "#" + databaseName];
return _options.Value.ConnectionStrings[tenantId + "#" + connStringName];
}
}
else

@ -0,0 +1,34 @@
using Shouldly;
using Xunit;
namespace Volo.Abp.Data
{
public class ConnectionStringNameAttribute_Tests
{
[Fact]
public void Should_Get_Class_FullName_If_Not_ConnStringNameAttribute_Specified()
{
ConnectionStringNameAttribute
.GetConnStringName<MyClassWithoutConnStringName>()
.ShouldBe(typeof(MyClassWithoutConnStringName).FullName);
}
[Fact]
public void Should_Get_ConnStringName_If_Not_Specified()
{
ConnectionStringNameAttribute
.GetConnStringName<MyClassWithConnStringName>()
.ShouldBe("MyDb");
}
private class MyClassWithoutConnStringName
{
}
[ConnectionStringName("MyDb")]
private class MyClassWithConnStringName
{
}
}
}

@ -1,34 +0,0 @@
using Shouldly;
using Xunit;
namespace Volo.Abp.Data
{
public class DatabaseNameAttribute_Tests
{
[Fact]
public void Should_Get_Class_FullName_If_Not_DatabaseNameAttribute_Specified()
{
DatabaseNameAttribute
.GetDatabaseName<MyClassWithoutDatabaseName>()
.ShouldBe(typeof(MyClassWithoutDatabaseName).FullName);
}
[Fact]
public void Should_Get_DatabaseName_If_Not_Specified()
{
DatabaseNameAttribute
.GetDatabaseName<MyClassWithDatabaseName>()
.ShouldBe("MyDb");
}
private class MyClassWithoutDatabaseName
{
}
[DatabaseName("MyDb")]
private class MyClassWithDatabaseName
{
}
}
}
Loading…
Cancel
Save