diff --git a/Volo.Abp.sln b/Volo.Abp.sln index 3829bd06b7..58efaf9e77 100644 --- a/Volo.Abp.sln +++ b/Volo.Abp.sln @@ -160,13 +160,17 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.VirtualFileSystem. EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Core", "src\Volo.Abp.Core\Volo.Abp.Core.csproj", "{A7A97BFD-48FA-45D1-8423-031BA30BEAA1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Localization", "src\Volo.Abp.Localization\Volo.Abp.Localization.csproj", "{166E89F7-A505-45F2-B4CD-F345DE39030E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Localization", "src\Volo.Abp.Localization\Volo.Abp.Localization.csproj", "{166E89F7-A505-45F2-B4CD-F345DE39030E}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Localization.Tests", "test\Volo.Abp.Localization.Tests\Volo.Abp.Localization.Tests.csproj", "{6E50143F-0982-4BCB-9D0E-FF5451AE8123}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Localization.Tests", "test\Volo.Abp.Localization.Tests\Volo.Abp.Localization.Tests.csproj", "{6E50143F-0982-4BCB-9D0E-FF5451AE8123}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Core.Tests", "test\Volo.Abp.Core.Tests\Volo.Abp.Core.Tests.csproj", "{3622B544-1345-4230-ABC2-4902328DE971}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Core.Tests", "test\Volo.Abp.Core.Tests\Volo.Abp.Core.Tests.csproj", "{3622B544-1345-4230-ABC2-4902328DE971}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.ApiVersioning.Abstractions", "src\Volo.Abp.ApiVersioning.Abstractions\Volo.Abp.ApiVersioning.Abstractions.csproj", "{BC55B87F-D2BD-428D-8F78-A95EE7BDFDFA}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.ApiVersioning.Abstractions", "src\Volo.Abp.ApiVersioning.Abstractions\Volo.Abp.ApiVersioning.Abstractions.csproj", "{BC55B87F-D2BD-428D-8F78-A95EE7BDFDFA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Data", "src\Volo.Abp.Data\Volo.Abp.Data.csproj", "{5E7381EE-54BC-4BFD-883A-8C6578C2CAD7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Data.Tests", "test\Volo.Abp.Data.Tests\Volo.Abp.Data.Tests.csproj", "{5D2275B7-0745-420A-AF1C-32C563DAB5C8}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -434,6 +438,14 @@ Global {BC55B87F-D2BD-428D-8F78-A95EE7BDFDFA}.Debug|Any CPU.Build.0 = Debug|Any CPU {BC55B87F-D2BD-428D-8F78-A95EE7BDFDFA}.Release|Any CPU.ActiveCfg = Release|Any CPU {BC55B87F-D2BD-428D-8F78-A95EE7BDFDFA}.Release|Any CPU.Build.0 = Release|Any CPU + {5E7381EE-54BC-4BFD-883A-8C6578C2CAD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5E7381EE-54BC-4BFD-883A-8C6578C2CAD7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5E7381EE-54BC-4BFD-883A-8C6578C2CAD7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5E7381EE-54BC-4BFD-883A-8C6578C2CAD7}.Release|Any CPU.Build.0 = Release|Any CPU + {5D2275B7-0745-420A-AF1C-32C563DAB5C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5D2275B7-0745-420A-AF1C-32C563DAB5C8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5D2275B7-0745-420A-AF1C-32C563DAB5C8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5D2275B7-0745-420A-AF1C-32C563DAB5C8}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -514,6 +526,8 @@ Global {6E50143F-0982-4BCB-9D0E-FF5451AE8123} = {37087D1B-3693-4E96-983D-A69F210BDE53} {3622B544-1345-4230-ABC2-4902328DE971} = {37087D1B-3693-4E96-983D-A69F210BDE53} {BC55B87F-D2BD-428D-8F78-A95EE7BDFDFA} = {4C753F64-0C93-4D65-96C2-A40893AFC1E8} + {5E7381EE-54BC-4BFD-883A-8C6578C2CAD7} = {4C753F64-0C93-4D65-96C2-A40893AFC1E8} + {5D2275B7-0745-420A-AF1C-32C563DAB5C8} = {37087D1B-3693-4E96-983D-A69F210BDE53} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5} diff --git a/src/AbpDesk/Web_PlugIns/AbpDesk.MongoBlog.dll b/src/AbpDesk/Web_PlugIns/AbpDesk.MongoBlog.dll index d31f5a6078..07582f4fa6 100644 Binary files a/src/AbpDesk/Web_PlugIns/AbpDesk.MongoBlog.dll and b/src/AbpDesk/Web_PlugIns/AbpDesk.MongoBlog.dll differ diff --git a/src/Volo.Abp.Data/Volo.Abp.Data.csproj b/src/Volo.Abp.Data/Volo.Abp.Data.csproj new file mode 100644 index 0000000000..9082862573 --- /dev/null +++ b/src/Volo.Abp.Data/Volo.Abp.Data.csproj @@ -0,0 +1,20 @@ + + + + + + netstandard2.0 + Volo.Abp.Data + Volo.Abp.Data + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + false + false + false + + + + + + + + diff --git a/src/Volo.Abp.Data/Volo/Abp/Data/AbpDataModule.cs b/src/Volo.Abp.Data/Volo/Abp/Data/AbpDataModule.cs new file mode 100644 index 0000000000..244a70b80e --- /dev/null +++ b/src/Volo.Abp.Data/Volo/Abp/Data/AbpDataModule.cs @@ -0,0 +1,15 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Modularity; + +namespace Volo.Abp.Data +{ + public class AbpDataModule : AbpModule + { + public override void ConfigureServices(IServiceCollection services) + { + services.AddSingleton(typeof(IDataFilter<>), typeof(DataFilter<>)); + + services.AddAssemblyOf(); + } + } +} diff --git a/src/Volo.Abp/Volo/Abp/Data/ConnectionStringNameAttribute.cs b/src/Volo.Abp.Data/Volo/Abp/Data/ConnectionStringNameAttribute.cs similarity index 100% rename from src/Volo.Abp/Volo/Abp/Data/ConnectionStringNameAttribute.cs rename to src/Volo.Abp.Data/Volo/Abp/Data/ConnectionStringNameAttribute.cs diff --git a/src/Volo.Abp/Volo/Abp/Data/ConnectionStrings.cs b/src/Volo.Abp.Data/Volo/Abp/Data/ConnectionStrings.cs similarity index 100% rename from src/Volo.Abp/Volo/Abp/Data/ConnectionStrings.cs rename to src/Volo.Abp.Data/Volo/Abp/Data/ConnectionStrings.cs diff --git a/src/Volo.Abp/Volo/Abp/Data/DataFilter.cs b/src/Volo.Abp.Data/Volo/Abp/Data/DataFilter.cs similarity index 100% rename from src/Volo.Abp/Volo/Abp/Data/DataFilter.cs rename to src/Volo.Abp.Data/Volo/Abp/Data/DataFilter.cs diff --git a/src/Volo.Abp/Volo/Abp/Data/DataFilterOptions.cs b/src/Volo.Abp.Data/Volo/Abp/Data/DataFilterOptions.cs similarity index 100% rename from src/Volo.Abp/Volo/Abp/Data/DataFilterOptions.cs rename to src/Volo.Abp.Data/Volo/Abp/Data/DataFilterOptions.cs diff --git a/src/Volo.Abp/Volo/Abp/Data/DataFilterState.cs b/src/Volo.Abp.Data/Volo/Abp/Data/DataFilterState.cs similarity index 100% rename from src/Volo.Abp/Volo/Abp/Data/DataFilterState.cs rename to src/Volo.Abp.Data/Volo/Abp/Data/DataFilterState.cs diff --git a/src/Volo.Abp/Volo/Abp/Data/DbConnectionOptions.cs b/src/Volo.Abp.Data/Volo/Abp/Data/DbConnectionOptions.cs similarity index 100% rename from src/Volo.Abp/Volo/Abp/Data/DbConnectionOptions.cs rename to src/Volo.Abp.Data/Volo/Abp/Data/DbConnectionOptions.cs diff --git a/src/Volo.Abp/Volo/Abp/Data/DefaultConnectionStringResolver.cs b/src/Volo.Abp.Data/Volo/Abp/Data/DefaultConnectionStringResolver.cs similarity index 100% rename from src/Volo.Abp/Volo/Abp/Data/DefaultConnectionStringResolver.cs rename to src/Volo.Abp.Data/Volo/Abp/Data/DefaultConnectionStringResolver.cs diff --git a/src/Volo.Abp/Volo/Abp/Data/IConnectionStringResolver.cs b/src/Volo.Abp.Data/Volo/Abp/Data/IConnectionStringResolver.cs similarity index 100% rename from src/Volo.Abp/Volo/Abp/Data/IConnectionStringResolver.cs rename to src/Volo.Abp.Data/Volo/Abp/Data/IConnectionStringResolver.cs diff --git a/src/Volo.Abp/Volo/Abp/Data/IConnectionStringResolverExtensions.cs b/src/Volo.Abp.Data/Volo/Abp/Data/IConnectionStringResolverExtensions.cs similarity index 100% rename from src/Volo.Abp/Volo/Abp/Data/IConnectionStringResolverExtensions.cs rename to src/Volo.Abp.Data/Volo/Abp/Data/IConnectionStringResolverExtensions.cs diff --git a/src/Volo.Abp/Volo/Abp/Data/IDataFilter.cs b/src/Volo.Abp.Data/Volo/Abp/Data/IDataFilter.cs similarity index 100% rename from src/Volo.Abp/Volo/Abp/Data/IDataFilter.cs rename to src/Volo.Abp.Data/Volo/Abp/Data/IDataFilter.cs diff --git a/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml b/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml index b8aa57066b..731cddb457 100644 --- a/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml +++ b/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml @@ -8,7 +8,7 @@ }
- + diff --git a/src/Volo.Abp/Volo.Abp.csproj b/src/Volo.Abp/Volo.Abp.csproj index b12e8c3ed4..2b5616e14c 100644 --- a/src/Volo.Abp/Volo.Abp.csproj +++ b/src/Volo.Abp/Volo.Abp.csproj @@ -16,6 +16,7 @@ + diff --git a/src/Volo.Abp/Volo/Abp/AbpCommonModule.cs b/src/Volo.Abp/Volo/Abp/AbpCommonModule.cs index b0256e4e69..d09386bb1f 100644 --- a/src/Volo.Abp/Volo/Abp/AbpCommonModule.cs +++ b/src/Volo.Abp/Volo/Abp/AbpCommonModule.cs @@ -15,6 +15,7 @@ namespace Volo.Abp [DependsOn(typeof(AbpLocalizationModule))] [DependsOn(typeof(AbpVirtualFileSystemModule))] [DependsOn(typeof(AbpApiVersioningAbstractionsModule))] + [DependsOn(typeof(AbpDataModule))] public class AbpCommonModule : AbpModule { public override void PreConfigureServices(IServiceCollection services) @@ -38,8 +39,7 @@ namespace Volo.Abp public override void ConfigureServices(IServiceCollection services) { services.AddSingleton(NullCancellationTokenProvider.Instance); - services.AddSingleton(typeof(IDataFilter<>), typeof(DataFilter<>)); - + services.AddAssemblyOf(); } } diff --git a/src/Volo.Abp/Volo/Abp/Data/CommonDbContextRegistrationOptions.cs b/src/Volo.Abp/Volo/Abp/DependencyInjection/CommonDbContextRegistrationOptions.cs similarity index 94% rename from src/Volo.Abp/Volo/Abp/Data/CommonDbContextRegistrationOptions.cs rename to src/Volo.Abp/Volo/Abp/DependencyInjection/CommonDbContextRegistrationOptions.cs index db93a133ed..7711e5039e 100644 --- a/src/Volo.Abp/Volo/Abp/Data/CommonDbContextRegistrationOptions.cs +++ b/src/Volo.Abp/Volo/Abp/DependencyInjection/CommonDbContextRegistrationOptions.cs @@ -7,7 +7,10 @@ using Volo.Abp.Reflection; namespace Volo.Abp.Data { - public class CommonDbContextRegistrationOptions : ICommonDbContextRegistrationOptionsBuilder + /// + /// This is a base class for dbcoUse derived + /// + public abstract class CommonDbContextRegistrationOptions : ICommonDbContextRegistrationOptionsBuilder { public bool SpecifiedDefaultRepositoryTypes => DefaultRepositoryImplementationType != null && DefaultRepositoryImplementationTypeWithDefaultPrimaryKey != null; diff --git a/src/Volo.Abp/Volo/Abp/Data/ICommonDbContextRegistrationOptionsBuilder.cs b/src/Volo.Abp/Volo/Abp/DependencyInjection/ICommonDbContextRegistrationOptionsBuilder.cs similarity index 100% rename from src/Volo.Abp/Volo/Abp/Data/ICommonDbContextRegistrationOptionsBuilder.cs rename to src/Volo.Abp/Volo/Abp/DependencyInjection/ICommonDbContextRegistrationOptionsBuilder.cs diff --git a/src/Volo.Abp/Volo/Abp/Domain/Repositories/RepositoryRegistrarBase.cs b/src/Volo.Abp/Volo/Abp/Domain/Repositories/RepositoryRegistrarBase.cs index e769e36f3c..cde8d48164 100644 --- a/src/Volo.Abp/Volo/Abp/Domain/Repositories/RepositoryRegistrarBase.cs +++ b/src/Volo.Abp/Volo/Abp/Domain/Repositories/RepositoryRegistrarBase.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Data; using Volo.Abp.Domain.Entities; +using Volo.Abp.Reflection; namespace Volo.Abp.Domain.Repositories { @@ -33,7 +34,7 @@ namespace Volo.Abp.Domain.Repositories { foreach (var entityType in GetEntityTypes(dbContextType)) { - if (!Options.ShouldRegisterDefaultRepositoryFor(entityType)) + if (!ShouldRegisterDefaultRepositoryFor(entityType)) { continue; } @@ -64,6 +65,26 @@ namespace Volo.Abp.Domain.Repositories services.AddDefaultRepository(entityType, repositoryImplementationType); } + public bool ShouldRegisterDefaultRepositoryFor(Type entityType) + { + if (!Options.RegisterDefaultRepositories) + { + return false; + } + + if (Options.CustomRepositories.ContainsKey(entityType)) + { + return false; + } + + if (!Options.IncludeAllEntitiesForDefaultRepositories && !ReflectionHelper.IsAssignableToGenericType(entityType, typeof(IAggregateRoot<>))) + { + return false; + } + + return true; + } + protected abstract IEnumerable GetEntityTypes(Type dbContextType); protected abstract Type GetRepositoryTypeForDefaultPk(Type dbContextType, Type entityType); diff --git a/test/Volo.Abp.Data.Tests/Volo.Abp.Data.Tests.csproj b/test/Volo.Abp.Data.Tests/Volo.Abp.Data.Tests.csproj new file mode 100644 index 0000000000..1d45380169 --- /dev/null +++ b/test/Volo.Abp.Data.Tests/Volo.Abp.Data.Tests.csproj @@ -0,0 +1,23 @@ + + + + netcoreapp2.0 + Volo.Abp.Data.Tests + Volo.Abp.Data.Tests + true + false + false + false + + + + + + + + + + + + + diff --git a/test/Volo.Abp.Tests/Volo/Abp/Data/ConnectionStringNameAttribute_Tests.cs b/test/Volo.Abp.Data.Tests/Volo/Abp/Data/ConnectionStringNameAttribute_Tests.cs similarity index 100% rename from test/Volo.Abp.Tests/Volo/Abp/Data/ConnectionStringNameAttribute_Tests.cs rename to test/Volo.Abp.Data.Tests/Volo/Abp/Data/ConnectionStringNameAttribute_Tests.cs diff --git a/test/Volo.Abp.Tests/Volo/Abp/Data/ConnectionStringResolver_Tests.cs b/test/Volo.Abp.Data.Tests/Volo/Abp/Data/ConnectionStringResolver_Tests.cs similarity index 97% rename from test/Volo.Abp.Tests/Volo/Abp/Data/ConnectionStringResolver_Tests.cs rename to test/Volo.Abp.Data.Tests/Volo/Abp/Data/ConnectionStringResolver_Tests.cs index d894c30ff9..6255519cd6 100644 --- a/test/Volo.Abp.Tests/Volo/Abp/Data/ConnectionStringResolver_Tests.cs +++ b/test/Volo.Abp.Data.Tests/Volo/Abp/Data/ConnectionStringResolver_Tests.cs @@ -38,7 +38,7 @@ namespace Volo.Abp.Data _connectionStringResolver.Resolve(Database2Name).ShouldBe(DefaultConnString); } - [DependsOn(typeof(AbpCommonModule))] + [DependsOn(typeof(AbpDataModule))] public class TestModule : AbpModule { public override void ConfigureServices(IServiceCollection services) diff --git a/test/Volo.Abp.Tests/Volo/Abp/Domain/Repositories/RepositoryRegistration_Tests.cs b/test/Volo.Abp.Tests/Volo/Abp/Domain/Repositories/RepositoryRegistration_Tests.cs index 3c6ec3e261..c24b2141a8 100644 --- a/test/Volo.Abp.Tests/Volo/Abp/Domain/Repositories/RepositoryRegistration_Tests.cs +++ b/test/Volo.Abp.Tests/Volo/Abp/Domain/Repositories/RepositoryRegistration_Tests.cs @@ -16,7 +16,7 @@ namespace Volo.Abp.Domain.Repositories var services = new ServiceCollection(); - var options = new CommonDbContextRegistrationOptions(); + var options = new TestDbContextRegistrationOptions(); options.WithDefaultRepositories(); //Act @@ -37,7 +37,7 @@ namespace Volo.Abp.Domain.Repositories var services = new ServiceCollection(); - var options = new CommonDbContextRegistrationOptions(); + var options = new TestDbContextRegistrationOptions(); options.WithDefaultRepositories(true); //Act @@ -58,7 +58,7 @@ namespace Volo.Abp.Domain.Repositories var services = new ServiceCollection(); - var options = new CommonDbContextRegistrationOptions(); + var options = new TestDbContextRegistrationOptions(); options .WithDefaultRepositories(true) .WithCustomRepository(); @@ -81,7 +81,7 @@ namespace Volo.Abp.Domain.Repositories var services = new ServiceCollection(); - var options = new CommonDbContextRegistrationOptions(); + var options = new TestDbContextRegistrationOptions(); options .WithDefaultRepositories(true) .WithDefaultRepositoryClasses(typeof(MyTestCustomBaseRepository<,>), typeof(MyTestCustomBaseRepository<>)); @@ -193,5 +193,9 @@ namespace Volo.Abp.Domain.Repositories } + public class TestDbContextRegistrationOptions : CommonDbContextRegistrationOptions + { + + } } }