diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/BasicRepositoryBase.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/BasicRepositoryBase.cs index f85a156184..32c0cc71bf 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/BasicRepositoryBase.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/BasicRepositoryBase.cs @@ -44,16 +44,18 @@ public abstract class BasicRepositoryBase : public bool? IsChangeTrackingEnabled { get; protected set; } - protected string? EntityName { get; private set; } + public string? EntityName { get; set; } public void SetEntityName(string? name) { EntityName = name; } - protected BasicRepositoryBase() - { + public string ProviderName { get; } + protected BasicRepositoryBase(string providerName) + { + ProviderName = Check.NotNullOrWhiteSpace(providerName, nameof(providerName)); } public abstract Task InsertAsync(TEntity entity, bool autoSave = false, CancellationToken cancellationToken = default); @@ -146,6 +148,12 @@ public abstract class BasicRepositoryBase : public abstract class BasicRepositoryBase : BasicRepositoryBase, IBasicRepository where TEntity : class, IEntity { + protected BasicRepositoryBase(string providerName) + : base(providerName) + { + + } + public virtual async Task GetAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default) { var entity = await FindAsync(id, includeDetails, cancellationToken); diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/IRepository.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/IRepository.cs index d5a66b1fe7..cadc25da43 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/IRepository.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/IRepository.cs @@ -8,13 +8,15 @@ using Volo.Abp.Domain.Entities; namespace Volo.Abp.Domain.Repositories; /// -/// Just to mark a class as repository. +/// The base interface to implement a repository for an entity. /// public interface IRepository { bool? IsChangeTrackingEnabled { get; } - void SetEntityName(string? name); + string? EntityName { get; set; } + + string ProviderName { get; } } public interface IRepository : IReadOnlyRepository, IBasicRepository diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryBase.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryBase.cs index eb2457f8c8..1277b9ceb8 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryBase.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryBase.cs @@ -14,6 +14,11 @@ namespace Volo.Abp.Domain.Repositories; public abstract class RepositoryBase : BasicRepositoryBase, IRepository, IUnitOfWorkManagerAccessor where TEntity : class, IEntity { + protected RepositoryBase(string providerName) + : base(providerName) + { + } + [Obsolete("Use WithDetailsAsync method.")] public virtual IQueryable WithDetails() { @@ -92,6 +97,11 @@ public abstract class RepositoryBase : BasicRepositoryBase, IR public abstract class RepositoryBase : RepositoryBase, IRepository where TEntity : class, IEntity { + protected RepositoryBase(string providerName) + : base(providerName) + { + } + public abstract Task GetAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default); public abstract Task FindAsync(TKey id, bool includeDetails = true, CancellationToken cancellationToken = default); diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryExtensions.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryExtensions.cs index 9fc9c16d31..70e69490a4 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryExtensions.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryExtensions.cs @@ -251,12 +251,12 @@ public static class RepositoryExtensions await repository.DeleteAsync(entity, autoSave, cancellationToken); } - public static TRepository WithEntityName( + public static TRepository SetEntityName( this TRepository repository, string name ) where TRepository : class, IRepository { - repository.SetEntityName(name); + repository.EntityName = name; return repository; } } diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs index fd61e72781..575dccadef 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs @@ -93,6 +93,7 @@ public class EfCoreRepository : RepositoryBase, IE public IEfCoreBulkOperationProvider? BulkOperationProvider => LazyServiceProvider.LazyGetService(); public EfCoreRepository(IDbContextProvider dbContextProvider) + : base(AbpEfCoreConsts.ProviderName) { _dbContextProvider = dbContextProvider; diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpEfCoreConsts.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpEfCoreConsts.cs new file mode 100644 index 0000000000..6d1f0c9dc6 --- /dev/null +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpEfCoreConsts.cs @@ -0,0 +1,6 @@ +namespace Volo.Abp.EntityFrameworkCore; + +public class AbpEfCoreConsts +{ + public const string ProviderName = "Volo.Abp.EntityFrameworkCore"; +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs b/framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs index 058508a30a..9bef2a124a 100644 --- a/framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs +++ b/framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs @@ -50,6 +50,7 @@ public class MemoryDbRepository : RepositoryBase LazyServiceProvider.LazyGetRequiredService(); public MemoryDbRepository(IMemoryDatabaseProvider databaseProvider) + : base(AbpMemoryDbConsts.ProviderName) { DatabaseProvider = databaseProvider; } diff --git a/framework/src/Volo.Abp.MemoryDb/Volo/Abp/MemoryDb/AbpMemoryDbConsts.cs b/framework/src/Volo.Abp.MemoryDb/Volo/Abp/MemoryDb/AbpMemoryDbConsts.cs new file mode 100644 index 0000000000..a15563c68f --- /dev/null +++ b/framework/src/Volo.Abp.MemoryDb/Volo/Abp/MemoryDb/AbpMemoryDbConsts.cs @@ -0,0 +1,6 @@ +namespace Volo.Abp.MemoryDb; + +public class AbpMemoryDbConsts +{ + public const string ProviderName = "Volo.Abp.MemoryDb"; +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs index fdc7464d6b..a8cc1d39ae 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs @@ -101,6 +101,7 @@ public class MongoDbRepository public IMongoDbRepositoryFilterer RepositoryFilterer => LazyServiceProvider.LazyGetService>()!; public MongoDbRepository(IMongoDbContextProvider dbContextProvider) + : base(AbpMongoDbConsts.ProviderName) { DbContextProvider = dbContextProvider; } diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbConsts.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbConsts.cs new file mode 100644 index 0000000000..e107d31bf0 --- /dev/null +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbConsts.cs @@ -0,0 +1,6 @@ +namespace Volo.Abp.MongoDB; + +public class AbpMongoDbConsts +{ + public const string ProviderName = "Volo.Abp.MongoDB"; +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Repositories/RepositoryRegistration_Tests.cs b/framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Repositories/RepositoryRegistration_Tests.cs index 193bbaed14..bb2e9eeecd 100644 --- a/framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Repositories/RepositoryRegistration_Tests.cs +++ b/framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Repositories/RepositoryRegistration_Tests.cs @@ -295,6 +295,10 @@ public class RepositoryRegistration_Tests public class MyTestDefaultRepository : RepositoryBase where TEntity : class, IEntity { + public MyTestDefaultRepository() + : base("MyTestDefault") + { + } [Obsolete("Use GetQueryableAsync method.")] protected override IQueryable GetQueryable() @@ -408,11 +412,8 @@ public class RepositoryRegistration_Tests public class MyTestAggregateRootWithDefaultPkEmptyRepository : IMyTestAggregateRootWithDefaultPkEmptyRepository { public bool? IsChangeTrackingEnabled { get; set; } - - public void SetEntityName(string name) - { - - } + public string EntityName { get; set; } + public string ProviderName { get; } = "MyFakeProvider"; } public class TestDbContextRegistrationOptions : AbpCommonDbContextRegistrationOptions