diff --git a/src/AbpDesk/AbpDesk.EntityFrameworkCore/AbpDesk/EntityFrameworkCore/AbpDeskDbContext.cs b/src/AbpDesk/AbpDesk.EntityFrameworkCore/AbpDesk/EntityFrameworkCore/AbpDeskDbContext.cs index e22dc2d1e4..db2b048cea 100644 --- a/src/AbpDesk/AbpDesk.EntityFrameworkCore/AbpDesk/EntityFrameworkCore/AbpDeskDbContext.cs +++ b/src/AbpDesk/AbpDesk.EntityFrameworkCore/AbpDesk/EntityFrameworkCore/AbpDeskDbContext.cs @@ -1,9 +1,11 @@ using AbpDesk.Tickets; using Microsoft.EntityFrameworkCore; +using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; namespace AbpDesk.EntityFrameworkCore { + [DatabaseName(ConnectionStrings.DefaultConnectionStringName)] public class AbpDeskDbContext : AbpDbContext { public DbSet Tickets { get; set; } diff --git a/src/Volo.Abp/Volo/Abp/Data/ConnectionStringsDictionary.cs b/src/Volo.Abp/Volo/Abp/Data/ConnectionStrings.cs similarity index 63% rename from src/Volo.Abp/Volo/Abp/Data/ConnectionStringsDictionary.cs rename to src/Volo.Abp/Volo/Abp/Data/ConnectionStrings.cs index 29243fc337..ab602bcafc 100644 --- a/src/Volo.Abp/Volo/Abp/Data/ConnectionStringsDictionary.cs +++ b/src/Volo.Abp/Volo/Abp/Data/ConnectionStrings.cs @@ -2,10 +2,10 @@ namespace Volo.Abp.Data { - public class ConnectionStringsDictionary : Dictionary + public class ConnectionStrings : Dictionary { - private const string DefaultConnectionStringName = "Default"; - + public const string DefaultConnectionStringName = "Default"; + public string Default { get { return this[DefaultConnectionStringName]; } diff --git a/src/Volo.Abp/Volo/Abp/Data/DatabaseNameAttribute.cs b/src/Volo.Abp/Volo/Abp/Data/DatabaseNameAttribute.cs index 269845e7de..e810971ac8 100644 --- a/src/Volo.Abp/Volo/Abp/Data/DatabaseNameAttribute.cs +++ b/src/Volo.Abp/Volo/Abp/Data/DatabaseNameAttribute.cs @@ -1,15 +1,18 @@ using System; -using System.Linq; using System.Reflection; +using JetBrains.Annotations; namespace Volo.Abp.Data { public class DatabaseNameAttribute : Attribute { + [NotNull] public string Name { get; } - public DatabaseNameAttribute(string name) + public DatabaseNameAttribute([NotNull] string name) { + Check.NotNull(name, nameof(name)); + Name = name; } @@ -20,14 +23,14 @@ namespace Volo.Abp.Data public static string GetDatabaseName(Type type) { - var typeInfo = type.GetTypeInfo(); - var databaseNameAttribute = typeInfo.GetCustomAttributes().FirstOrDefault(); - if (databaseNameAttribute != null) + var databaseNameAttribute = type.GetTypeInfo().GetCustomAttribute(); + + if (databaseNameAttribute == null) { - return databaseNameAttribute.Name; + return type.FullName; } - return type.FullName; + return databaseNameAttribute.Name; } } } \ No newline at end of file diff --git a/src/Volo.Abp/Volo/Abp/Data/DbConnectionOptions.cs b/src/Volo.Abp/Volo/Abp/Data/DbConnectionOptions.cs index 86748435e7..9c3e8e856a 100644 --- a/src/Volo.Abp/Volo/Abp/Data/DbConnectionOptions.cs +++ b/src/Volo.Abp/Volo/Abp/Data/DbConnectionOptions.cs @@ -2,11 +2,11 @@ { public class DbConnectionOptions { - public ConnectionStringsDictionary ConnectionStrings { get; set; } + public ConnectionStrings ConnectionStrings { get; set; } public DbConnectionOptions() { - ConnectionStrings = new ConnectionStringsDictionary(); + ConnectionStrings = new ConnectionStrings(); } } } diff --git a/src/Volo.DependencyInjection/Volo/DependencyInjection/DefaultConventionalRegistrar.cs b/src/Volo.DependencyInjection/Volo/DependencyInjection/DefaultConventionalRegistrar.cs index 62c0a01d7f..93b739bc2a 100644 --- a/src/Volo.DependencyInjection/Volo/DependencyInjection/DefaultConventionalRegistrar.cs +++ b/src/Volo.DependencyInjection/Volo/DependencyInjection/DefaultConventionalRegistrar.cs @@ -1,5 +1,4 @@ using System; -using System.Linq; using System.Reflection; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; @@ -17,7 +16,7 @@ namespace Volo.DependencyInjection return; } - var dependencyAttribute = typeInfo.GetCustomAttributes(true).FirstOrDefault(); //TODO: Use GetCustomAttribute instead? + var dependencyAttribute = typeInfo.GetCustomAttribute(true); var lifeTime = dependencyAttribute?.Lifetime ?? GetServiceLifetimeFromInterfaces(type); if (lifeTime == null) diff --git a/test/Volo.Abp.Tests/Volo/Abp/Data/DatabaseNameAttribute_Tests.cs b/test/Volo.Abp.Tests/Volo/Abp/Data/DatabaseNameAttribute_Tests.cs new file mode 100644 index 0000000000..98651c3d7e --- /dev/null +++ b/test/Volo.Abp.Tests/Volo/Abp/Data/DatabaseNameAttribute_Tests.cs @@ -0,0 +1,34 @@ +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() + .ShouldBe(typeof(MyClassWithoutDatabaseName).FullName); + } + + [Fact] + public void Should_Get_DatabaseName_If_Not_Specified() + { + DatabaseNameAttribute + .GetDatabaseName() + .ShouldBe("MyDb"); + } + private class MyClassWithoutDatabaseName + { + + } + + [DatabaseName("MyDb")] + private class MyClassWithDatabaseName + { + + } + } +}