diff --git a/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj b/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj
index 2b9e46f43d..e2f589b399 100644
--- a/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj
+++ b/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj
@@ -15,7 +15,7 @@
-
+
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 8676ac0f34..02dd0e5de7 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
@@ -29,6 +29,8 @@ namespace Volo.Abp.Domain.Repositories.MongoDB
public virtual IMongoDatabase Database => DbContext.Database;
+ public virtual IClientSessionHandle SessionHandle => DbContext.SessionHandle;
+
public virtual TMongoDbContext DbContext => DbContextProvider.GetDbContext();
protected IMongoDbContextProvider DbContextProvider { get; }
@@ -60,10 +62,21 @@ namespace Volo.Abp.Domain.Repositories.MongoDB
{
await ApplyAbpConceptsForAddedEntityAsync(entity);
- await Collection.InsertOneAsync(
- entity,
- cancellationToken: GetCancellationToken(cancellationToken)
- );
+ if (SessionHandle != null)
+ {
+ await Collection.InsertOneAsync(
+ SessionHandle,
+ entity,
+ cancellationToken: GetCancellationToken(cancellationToken)
+ );
+ }
+ else
+ {
+ await Collection.InsertOneAsync(
+ entity,
+ cancellationToken: GetCancellationToken(cancellationToken)
+ );
+ }
return entity;
}
@@ -88,12 +101,27 @@ namespace Volo.Abp.Domain.Repositories.MongoDB
await TriggerDomainEventsAsync(entity);
var oldConcurrencyStamp = SetNewConcurrencyStamp(entity);
+ ReplaceOneResult result;
+
+ if (SessionHandle != null)
+ {
+ result = await Collection.ReplaceOneAsync(
+ SessionHandle,
+ CreateEntityFilter(entity, true, oldConcurrencyStamp),
+ entity,
+ cancellationToken: GetCancellationToken(cancellationToken)
+ );
- var result = await Collection.ReplaceOneAsync(
- CreateEntityFilter(entity, true, oldConcurrencyStamp),
- entity,
- cancellationToken: GetCancellationToken(cancellationToken)
- );
+
+ }
+ else
+ {
+ result = await Collection.ReplaceOneAsync(
+ CreateEntityFilter(entity, true, oldConcurrencyStamp),
+ entity,
+ cancellationToken: GetCancellationToken(cancellationToken)
+ );
+ }
if (result.MatchedCount <= 0)
{
@@ -114,11 +142,25 @@ namespace Volo.Abp.Domain.Repositories.MongoDB
if (entity is ISoftDelete softDeleteEntity && !IsHardDeleted(entity))
{
softDeleteEntity.IsDeleted = true;
- var result = await Collection.ReplaceOneAsync(
- CreateEntityFilter(entity, true, oldConcurrencyStamp),
- entity,
- cancellationToken: GetCancellationToken(cancellationToken)
- );
+ ReplaceOneResult result;
+
+ if (SessionHandle != null)
+ {
+ result = await Collection.ReplaceOneAsync(
+ SessionHandle,
+ CreateEntityFilter(entity, true, oldConcurrencyStamp),
+ entity,
+ cancellationToken: GetCancellationToken(cancellationToken)
+ );
+ }
+ else
+ {
+ result = await Collection.ReplaceOneAsync(
+ CreateEntityFilter(entity, true, oldConcurrencyStamp),
+ entity,
+ cancellationToken: GetCancellationToken(cancellationToken)
+ );
+ }
if (result.MatchedCount <= 0)
{
@@ -127,10 +169,23 @@ namespace Volo.Abp.Domain.Repositories.MongoDB
}
else
{
- var result = await Collection.DeleteOneAsync(
- CreateEntityFilter(entity, true, oldConcurrencyStamp),
- GetCancellationToken(cancellationToken)
- );
+ DeleteResult result;
+
+ if (SessionHandle != null)
+ {
+ result = await Collection.DeleteOneAsync(
+ SessionHandle,
+ CreateEntityFilter(entity, true, oldConcurrencyStamp),
+ cancellationToken: GetCancellationToken(cancellationToken)
+ );
+ }
+ else
+ {
+ result = await Collection.DeleteOneAsync(
+ CreateEntityFilter(entity, true, oldConcurrencyStamp),
+ GetCancellationToken(cancellationToken)
+ );
+ }
if (result.DeletedCount <= 0)
{
@@ -195,9 +250,7 @@ namespace Volo.Abp.Domain.Repositories.MongoDB
public virtual IMongoQueryable GetMongoQueryable()
{
- return ApplyDataFilters(
- Collection.AsQueryable()
- );
+ return ApplyDataFilters(SessionHandle != null ? Collection.AsQueryable(SessionHandle) : Collection.AsQueryable());
}
protected virtual bool IsHardDeleted(TEntity entity)
{
@@ -404,6 +457,13 @@ namespace Volo.Abp.Domain.Repositories.MongoDB
bool includeDetails = true,
CancellationToken cancellationToken = default)
{
+ if (SessionHandle != null)
+ {
+ return await Collection
+ .Find(SessionHandle, RepositoryFilterer.CreateEntityFilter(id, true))
+ .FirstOrDefaultAsync(GetCancellationToken(cancellationToken));
+ }
+
return await Collection
.Find(RepositoryFilterer.CreateEntityFilter(id, true))
.FirstOrDefaultAsync(GetCancellationToken(cancellationToken));
diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs
index bfa4b87da1..e961fdf256 100644
--- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs
+++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContext.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using MongoDB.Bson;
using MongoDB.Driver;
using Volo.Abp.DependencyInjection;
@@ -10,14 +11,17 @@ namespace Volo.Abp.MongoDB
public IMongoDatabase Database { get; private set; }
+ public IClientSessionHandle SessionHandle { get; private set; }
+
protected internal virtual void CreateModel(IMongoModelBuilder modelBuilder)
{
}
- public virtual void InitializeDatabase(IMongoDatabase database)
+ public virtual void InitializeDatabase(IMongoDatabase database, IClientSessionHandle sessionHandle)
{
Database = database;
+ SessionHandle = sessionHandle;
}
public virtual IMongoCollection Collection()
@@ -25,6 +29,12 @@ namespace Volo.Abp.MongoDB
return Database.GetCollection(GetCollectionName());
}
+ public virtual void InitializeCollections(IMongoDatabase database)
+ {
+ Database = database;
+ ModelSource.GetModel(this);
+ }
+
protected virtual string GetCollectionName()
{
return GetEntityModel().CollectionName;
@@ -42,4 +52,4 @@ namespace Volo.Abp.MongoDB
return model;
}
}
-}
\ No newline at end of file
+}
diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs
index e36e972954..d32f015a33 100644
--- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs
+++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs
@@ -1,7 +1,9 @@
-using Microsoft.Extensions.DependencyInjection.Extensions;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.DependencyInjection.Extensions;
using Volo.Abp.Domain;
using Volo.Abp.Domain.Repositories.MongoDB;
using Volo.Abp.Modularity;
+using Volo.Abp.MongoDB.DependencyInjection;
using Volo.Abp.Uow.MongoDB;
namespace Volo.Abp.MongoDB
@@ -9,18 +11,23 @@ namespace Volo.Abp.MongoDB
[DependsOn(typeof(AbpDddDomainModule))]
public class AbpMongoDbModule : AbpModule
{
+ public override void PreConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddConventionalRegistrar(new AbpMongoDbConventionalRegistrar());
+ }
+
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.TryAddTransient(
typeof(IMongoDbContextProvider<>),
typeof(UnitOfWorkMongoDbContextProvider<>)
);
-
+
context.Services.TryAddTransient(
typeof(IMongoDbRepositoryFilterer<>),
typeof(MongoDbRepositoryFilterer<>)
);
-
+
context.Services.TryAddTransient(
typeof(IMongoDbRepositoryFilterer<,>),
typeof(MongoDbRepositoryFilterer<,>)
diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/DependencyInjection/AbpMongoDbConventionalRegistrar.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/DependencyInjection/AbpMongoDbConventionalRegistrar.cs
new file mode 100644
index 0000000000..cb1ed7ea54
--- /dev/null
+++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/DependencyInjection/AbpMongoDbConventionalRegistrar.cs
@@ -0,0 +1,27 @@
+using System;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+
+namespace Volo.Abp.MongoDB.DependencyInjection
+{
+ public class AbpMongoDbConventionalRegistrar : DefaultConventionalRegistrar
+ {
+ public override void AddType(IServiceCollection services, Type type)
+ {
+ if (!typeof(IAbpMongoDbContext).IsAssignableFrom(type) || type == typeof(AbpMongoDbContext))
+ {
+ return;
+ }
+
+ var dependencyAttribute = GetDependencyAttributeOrNull(type);
+ var lifeTime = GetLifeTimeOrNull(type, dependencyAttribute);
+
+ if (lifeTime == null)
+ {
+ return;
+ }
+
+ services.Add(ServiceDescriptor.Describe(typeof(IAbpMongoDbContext), type, ServiceLifetime.Transient));
+ }
+ }
+}
diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/IAbpMongoDbContext.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/IAbpMongoDbContext.cs
index a2f48fd323..c4049e1389 100644
--- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/IAbpMongoDbContext.cs
+++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/IAbpMongoDbContext.cs
@@ -7,5 +7,7 @@ namespace Volo.Abp.MongoDB
IMongoDatabase Database { get; }
IMongoCollection Collection();
+
+ IClientSessionHandle SessionHandle { get; }
}
-}
\ No newline at end of file
+}
diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelBuilder.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelBuilder.cs
index 43ffbabf4a..6d8706d7ee 100644
--- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelBuilder.cs
+++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelBuilder.cs
@@ -3,6 +3,8 @@ using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
+using MongoDB.Bson;
+using MongoDB.Driver;
using Volo.Abp.Domain.Entities;
namespace Volo.Abp.MongoDB
@@ -18,7 +20,7 @@ namespace Volo.Abp.MongoDB
_entityModelBuilders = new Dictionary();
}
- public MongoDbContextModel Build()
+ public MongoDbContextModel Build(AbpMongoDbContext dbContext)
{
lock (SyncObj)
{
@@ -38,6 +40,8 @@ namespace Volo.Abp.MongoDB
}
baseClasses.AddRange(entityModel.EntityType.GetBaseClasses(includeObject: false));
+
+ CreateCollectionIfNotExists(dbContext, entityModel.CollectionName);
}
baseClasses = baseClasses.Distinct().ToList();
@@ -84,5 +88,16 @@ namespace Volo.Abp.MongoDB
{
return _entityModelBuilders.Values.Cast().ToImmutableList();
}
+
+ protected virtual void CreateCollectionIfNotExists(AbpMongoDbContext dbContext, string collectionName)
+ {
+ var filter = new BsonDocument("name", collectionName);
+ var options = new ListCollectionNamesOptions { Filter = filter };
+
+ if (!dbContext.Database.ListCollectionNames(options).Any())
+ {
+ dbContext.Database.CreateCollection(collectionName);
+ }
+ }
}
-}
\ No newline at end of file
+}
diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelSource.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelSource.cs
index c5cb0da1c8..295cb8b84f 100644
--- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelSource.cs
+++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoModelSource.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.MongoDB
public class MongoModelSource : IMongoModelSource, ISingletonDependency
{
protected readonly ConcurrentDictionary ModelCache = new ConcurrentDictionary();
-
+
public virtual MongoDbContextModel GetModel(AbpMongoDbContext dbContext)
{
return ModelCache.GetOrAdd(
@@ -26,7 +26,7 @@ namespace Volo.Abp.MongoDB
var modelBuilder = CreateModelBuilder();
BuildModelFromDbContextType(modelBuilder, dbContext.GetType());
BuildModelFromDbContextInstance(modelBuilder, dbContext);
- return modelBuilder.Build();
+ return modelBuilder.Build(dbContext);
}
protected virtual MongoModelBuilder CreateModelBuilder()
@@ -65,4 +65,4 @@ namespace Volo.Abp.MongoDB
dbContext.CreateModel(modelBuilder);
}
}
-}
\ No newline at end of file
+}
diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/MongoDbTransactionApi.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/MongoDbTransactionApi.cs
new file mode 100644
index 0000000000..6c3ab76ee5
--- /dev/null
+++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/MongoDbTransactionApi.cs
@@ -0,0 +1,42 @@
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using MongoDB.Driver;
+
+namespace Volo.Abp.Uow.MongoDB
+{
+ public class MongoDbTransactionApi : ITransactionApi, ISupportsRollback
+ {
+ public IClientSessionHandle SessionHandle { get; }
+
+ public MongoDbTransactionApi(IClientSessionHandle sessionHandle)
+ {
+ SessionHandle = sessionHandle;
+ }
+
+ public async Task CommitAsync()
+ {
+ await SessionHandle.CommitTransactionAsync();
+ }
+
+ protected void Commit()
+ {
+ SessionHandle.CommitTransaction();
+ }
+
+ public void Dispose()
+ {
+ SessionHandle.Dispose();
+ }
+
+ public void Rollback()
+ {
+ SessionHandle.AbortTransaction();
+ }
+
+ public async Task RollbackAsync(CancellationToken cancellationToken)
+ {
+ await SessionHandle.AbortTransactionAsync(cancellationToken);
+ }
+ }
+}
diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs
index 0d527efc4c..0d9969ee51 100644
--- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs
+++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs
@@ -1,5 +1,6 @@
using System;
using Microsoft.Extensions.DependencyInjection;
+using MongoDB.Bson;
using MongoDB.Driver;
using Volo.Abp.Data;
using Volo.Abp.MongoDB;
@@ -25,7 +26,8 @@ namespace Volo.Abp.Uow.MongoDB
var unitOfWork = _unitOfWorkManager.Current;
if (unitOfWork == null)
{
- throw new AbpException($"A {nameof(IMongoDatabase)} instance can only be created inside a unit of work!");
+ throw new AbpException(
+ $"A {nameof(IMongoDatabase)} instance can only be created inside a unit of work!");
}
var connectionString = _connectionStringResolver.Resolve();
@@ -41,18 +43,61 @@ namespace Volo.Abp.Uow.MongoDB
//TODO: Create only single MongoDbClient per connection string in an application (extract MongoClientCache for example).
var databaseApi = unitOfWork.GetOrAddDatabaseApi(
dbContextKey,
- () =>
+ () => new MongoDbDatabaseApi(CreateDbContext(unitOfWork, mongoUrl, databaseName)));
+
+ return ((MongoDbDatabaseApi) databaseApi).DbContext;
+ }
+
+ private TMongoDbContext CreateDbContext(IUnitOfWork unitOfWork, MongoUrl mongoUrl, string databaseName)
+ {
+ var client = new MongoClient(mongoUrl);
+ var database = client.GetDatabase(databaseName);
+
+ if (unitOfWork.Options.IsTransactional)
+ {
+ return CreateDbContextWithTransaction(unitOfWork, mongoUrl, client, database);
+ }
+
+ var dbContext = unitOfWork.ServiceProvider.GetRequiredService();
+ dbContext.ToAbpMongoDbContext().InitializeDatabase(database, null);
+
+ return dbContext;
+ }
+
+ public TMongoDbContext CreateDbContextWithTransaction(
+ IUnitOfWork unitOfWork,
+ MongoUrl url,
+ MongoClient client,
+ IMongoDatabase database)
+ {
+ var transactionApiKey = $"MongoDb_{url}";
+ var activeTransaction = unitOfWork.FindTransactionApi(transactionApiKey) as MongoDbTransactionApi;
+ var dbContext = unitOfWork.ServiceProvider.GetRequiredService();
+
+ if (activeTransaction?.SessionHandle == null)
+ {
+ var session = client.StartSession();
+
+ if (unitOfWork.Options.Timeout.HasValue)
{
- var database = new MongoClient(mongoUrl).GetDatabase(databaseName);
+ session.AdvanceOperationTime(new BsonTimestamp(unitOfWork.Options.Timeout.Value));
+ }
- var dbContext = unitOfWork.ServiceProvider.GetRequiredService();
+ session.StartTransaction();
- dbContext.ToAbpMongoDbContext().InitializeDatabase(database);
+ unitOfWork.AddTransactionApi(
+ transactionApiKey,
+ new MongoDbTransactionApi(session)
+ );
- return new MongoDbDatabaseApi(dbContext);
- });
+ dbContext.ToAbpMongoDbContext().InitializeDatabase(database, session);
+ }
+ else
+ {
+ dbContext.ToAbpMongoDbContext().InitializeDatabase(database, activeTransaction.SessionHandle);
+ }
- return ((MongoDbDatabaseApi)databaseApi).DbContext;
+ return dbContext;
}
}
-}
\ No newline at end of file
+}
diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbTestModule.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbTestModule.cs
index cfa7b033b7..8ec0b026cd 100644
--- a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbTestModule.cs
+++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbTestModule.cs
@@ -1,10 +1,15 @@
using System;
+using System.Linq;
+using System.Threading;
using Microsoft.Extensions.DependencyInjection;
+using MongoDB.Driver;
+using MongoDB.Driver.Core.Servers;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
using Volo.Abp.TestApp;
using Volo.Abp.TestApp.Domain;
using Volo.Abp.TestApp.MongoDB;
+using Volo.Abp.Uow;
namespace Volo.Abp.MongoDB
{
@@ -16,7 +21,7 @@ namespace Volo.Abp.MongoDB
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
+ var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
"Db_" +
Guid.NewGuid().ToString("N");
@@ -30,6 +35,11 @@ namespace Volo.Abp.MongoDB
options.AddDefaultRepositories();
options.AddRepository();
});
+
+ Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
+ });
}
}
}
diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbTestModule.cs b/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbTestModule.cs
index 5cac32faae..a8d213a81f 100644
--- a/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbTestModule.cs
+++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.MongoDB.Tests/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbTestModule.cs
@@ -1,6 +1,7 @@
using System;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
+using Volo.Abp.Uow;
namespace Volo.Abp.AuditLogging.MongoDB
{
@@ -12,14 +13,19 @@ namespace Volo.Abp.AuditLogging.MongoDB
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
+ var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
"Db_" +
- Guid.NewGuid().ToString("N");
+ Guid.NewGuid().ToString("N");
Configure(options =>
{
options.ConnectionStrings.Default = connectionString;
});
+
+ Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
+ });
}
}
-}
\ No newline at end of file
+}
diff --git a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/AbpBackgroundJobsMongoDbTestModule.cs b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/AbpBackgroundJobsMongoDbTestModule.cs
index 07be76b792..a7ec1ad65f 100644
--- a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/AbpBackgroundJobsMongoDbTestModule.cs
+++ b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.MongoDB.Tests/Volo/Abp/BackgroundJobs/MongoDB/AbpBackgroundJobsMongoDbTestModule.cs
@@ -1,6 +1,7 @@
using System;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
+using Volo.Abp.Uow;
namespace Volo.Abp.BackgroundJobs.MongoDB
{
@@ -12,14 +13,19 @@ namespace Volo.Abp.BackgroundJobs.MongoDB
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
+ var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
"Db_" +
- Guid.NewGuid().ToString("N");
+ Guid.NewGuid().ToString("N");
Configure(options =>
{
options.ConnectionStrings.Default = connectionString;
});
+
+ Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
+ });
}
}
-}
\ No newline at end of file
+}
diff --git a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/BlobStoringDatabaseMongoDbTestModule.cs b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/BlobStoringDatabaseMongoDbTestModule.cs
index 03eb96f6d3..12cb8b0de3 100644
--- a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/BlobStoringDatabaseMongoDbTestModule.cs
+++ b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.MongoDB.Tests/MongoDB/BlobStoringDatabaseMongoDbTestModule.cs
@@ -1,25 +1,31 @@
using System;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
+using Volo.Abp.Uow;
namespace Volo.Abp.BlobStoring.Database.MongoDB
{
[DependsOn(
typeof(BlobStoringDatabaseTestBaseModule),
typeof(BlobStoringDatabaseMongoDbModule)
- )]
+ )]
public class BlobStoringDatabaseMongoDbTestModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
+ var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
"Db_" +
- Guid.NewGuid().ToString("N");
+ Guid.NewGuid().ToString("N");
Configure(options =>
{
options.ConnectionStrings.Default = connectionString;
});
+
+ Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
+ });
}
}
-}
\ No newline at end of file
+}
diff --git a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs
index 1e68cebf21..f66922cfcd 100644
--- a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs
+++ b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs
@@ -1,6 +1,7 @@
using System;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
+using Volo.Abp.Uow;
namespace Volo.Blogging.MongoDB
{
@@ -12,14 +13,19 @@ namespace Volo.Blogging.MongoDB
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
+ var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
"Db_" +
- Guid.NewGuid().ToString("N");
+ Guid.NewGuid().ToString("N");
Configure(options =>
{
options.ConnectionStrings.Default = connectionString;
});
+
+ Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
+ });
}
}
-}
\ No newline at end of file
+}
diff --git a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/CmsKitMongoDbTestModule.cs b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/CmsKitMongoDbTestModule.cs
index 125ec8dbd4..521b93cc8c 100644
--- a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/CmsKitMongoDbTestModule.cs
+++ b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/CmsKitMongoDbTestModule.cs
@@ -1,25 +1,31 @@
using System;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
+using Volo.Abp.Uow;
namespace Volo.CmsKit.MongoDB
{
[DependsOn(
typeof(CmsKitTestBaseModule),
typeof(CmsKitMongoDbModule)
- )]
+ )]
public class CmsKitMongoDbTestModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
+ var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
"Db_" +
- Guid.NewGuid().ToString("N");
+ Guid.NewGuid().ToString("N");
Configure(options =>
{
options.ConnectionStrings.Default = connectionString;
});
+
+ Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
+ });
}
}
-}
\ No newline at end of file
+}
diff --git a/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/DocsMongoDBTestModule.cs b/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/DocsMongoDBTestModule.cs
index b31f9b5acd..d00f25b533 100644
--- a/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/DocsMongoDBTestModule.cs
+++ b/modules/docs/test/Volo.Docs.MongoDB.Tests/Volo/Docs/MongoDB/DocsMongoDBTestModule.cs
@@ -1,6 +1,7 @@
using System;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
+using Volo.Abp.Uow;
namespace Volo.Docs.MongoDB
{
@@ -12,14 +13,19 @@ namespace Volo.Docs.MongoDB
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
+ var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
"Db_" +
- Guid.NewGuid().ToString("N");
+ Guid.NewGuid().ToString("N");
Configure(options =>
{
options.ConnectionStrings.Default = connectionString;
});
+
+ Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
+ });
}
}
}
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs
index 04d4ac916f..fdafebef51 100644
--- a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs
+++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs
@@ -1,6 +1,7 @@
using System;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
+using Volo.Abp.Uow;
namespace Volo.Abp.FeatureManagement.MongoDB
{
@@ -12,14 +13,19 @@ namespace Volo.Abp.FeatureManagement.MongoDB
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
+ var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
"Db_" +
- Guid.NewGuid().ToString("N");
+ Guid.NewGuid().ToString("N");
Configure(options =>
{
options.ConnectionStrings.Default = connectionString;
});
+
+ Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
+ });
}
}
-}
\ No newline at end of file
+}
diff --git a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs
index f730e5f445..101f4836a5 100644
--- a/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs
+++ b/modules/identity/test/Volo.Abp.Identity.MongoDB.Tests/Volo/Abp/Identity/MongoDB/AbpIdentityMongoDbTestModule.cs
@@ -1,6 +1,7 @@
using System;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
+using Volo.Abp.Uow;
using Volo.Abp.PermissionManagement.MongoDB;
namespace Volo.Abp.Identity.MongoDB
@@ -9,19 +10,24 @@ namespace Volo.Abp.Identity.MongoDB
typeof(AbpIdentityTestBaseModule),
typeof(AbpPermissionManagementMongoDbModule),
typeof(AbpIdentityMongoDbModule)
- )]
+ )]
public class AbpIdentityMongoDbTestModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
+ var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
"Db_" +
- Guid.NewGuid().ToString("N");
+ Guid.NewGuid().ToString("N");
Configure(options =>
{
options.ConnectionStrings.Default = connectionString;
});
+
+ Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
+ });
}
}
}
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs
index d1721c720f..ae32aa2d4a 100644
--- a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs
@@ -3,6 +3,7 @@ using Volo.Abp.Data;
using Volo.Abp.Identity.MongoDB;
using Volo.Abp.IdentityServer.MongoDB;
using Volo.Abp.Modularity;
+using Volo.Abp.Uow;
namespace Volo.Abp.IdentityServer
{
@@ -16,7 +17,7 @@ namespace Volo.Abp.IdentityServer
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
+ var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
"Db_" +
Guid.NewGuid().ToString("N");
@@ -24,6 +25,11 @@ namespace Volo.Abp.IdentityServer
{
options.ConnectionStrings.Default = connectionString;
});
+
+ Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
+ });
}
}
}
diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbTestModule.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbTestModule.cs
index 8e3c7b2c22..d896cf01dc 100644
--- a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbTestModule.cs
+++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbTestModule.cs
@@ -1,6 +1,7 @@
using System;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
+using Volo.Abp.Uow;
namespace Volo.Abp.PermissionManagement.MongoDB
{
@@ -11,14 +12,19 @@ namespace Volo.Abp.PermissionManagement.MongoDB
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
- "Db_" +
- Guid.NewGuid().ToString("N");
+ var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
+ "Db_" +
+ Guid.NewGuid().ToString("N");
Configure(options =>
{
options.ConnectionStrings.Default = connectionString;
});
+
+ Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
+ });
}
}
}
diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/AbpSettingManagementMongoDbTestModule.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/AbpSettingManagementMongoDbTestModule.cs
index ec221eba15..0e456a2df8 100644
--- a/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/AbpSettingManagementMongoDbTestModule.cs
+++ b/modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests/Volo/Abp/SettingManagement/MongoDB/AbpSettingManagementMongoDbTestModule.cs
@@ -1,6 +1,7 @@
using System;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
+using Volo.Abp.Uow;
namespace Volo.Abp.SettingManagement.MongoDB
{
@@ -12,14 +13,19 @@ namespace Volo.Abp.SettingManagement.MongoDB
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
+ var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
"Db_" +
- Guid.NewGuid().ToString("N");
+ Guid.NewGuid().ToString("N");
Configure(options =>
{
options.ConnectionStrings.Default = connectionString;
});
+
+ Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
+ });
}
}
}
diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbTestModule.cs b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbTestModule.cs
index 9584ec2d44..3bdcf0ad9c 100644
--- a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbTestModule.cs
+++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbTestModule.cs
@@ -1,6 +1,7 @@
using System;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
+using Volo.Abp.Uow;
namespace Volo.Abp.TenantManagement.MongoDB
{
@@ -12,14 +13,19 @@ namespace Volo.Abp.TenantManagement.MongoDB
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
+ var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
"Db_" +
- Guid.NewGuid().ToString("N");
+ Guid.NewGuid().ToString("N");
Configure(options =>
{
options.ConnectionStrings.Default = connectionString;
});
+
+ Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
+ });
}
}
}
diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/MongoDbFixture.cs b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/MongoDbFixture.cs
index 1b3777f6a8..689f273178 100644
--- a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/MongoDbFixture.cs
+++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo/Abp/TenantManagement/MongoDb/MongoDbFixture.cs
@@ -1,5 +1,7 @@
using System;
using Mongo2Go;
+using MongoDB.Driver;
+using Volo.Abp.MongoDB;
namespace Volo.Abp.TenantManagement.MongoDB
{
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs
new file mode 100644
index 0000000000..395ff28b39
--- /dev/null
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using MongoDB.Driver;
+using MyCompanyName.MyProjectName.Data;
+using Volo.Abp.Data;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.MongoDB;
+
+namespace MyCompanyName.MyProjectName.MongoDB
+{
+ public class MongoDbMyProjectNameDbSchemaMigrator : IMyProjectNameDbSchemaMigrator , ITransientDependency
+ {
+ private readonly IServiceProvider _serviceProvider;
+
+ public MongoDbMyProjectNameDbSchemaMigrator(IServiceProvider serviceProvider)
+ {
+ _serviceProvider = serviceProvider;
+ }
+
+ public Task MigrateAsync()
+ {
+ var dbContexts = _serviceProvider.GetServices();
+ var connectionStringResolver = _serviceProvider.GetService();
+
+ foreach (var dbContext in dbContexts)
+ {
+ var connectionString =
+ connectionStringResolver.Resolve(
+ ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType()));
+ var mongoUrl = new MongoUrl(connectionString);
+ var databaseName = mongoUrl.DatabaseName;
+ var client = new MongoClient(mongoUrl);
+
+ if (databaseName.IsNullOrWhiteSpace())
+ {
+ databaseName = ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType());
+ }
+
+ (dbContext as AbpMongoDbContext)?.InitializeCollections(client.GetDatabase(databaseName));
+ }
+
+ return Task.CompletedTask;
+ }
+ }
+}
diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs
index 44783b67e4..30687dd407 100644
--- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs
+++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbTestModule.cs
@@ -1,6 +1,7 @@
using System;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
+using Volo.Abp.Uow;
namespace MyCompanyName.MyProjectName.MongoDB
{
@@ -12,7 +13,7 @@ namespace MyCompanyName.MyProjectName.MongoDB
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- var connectionString = MyProjectNameMongoDbFixture.ConnectionString.EnsureEndsWith('/') +
+ var connectionString = MyProjectNameMongoDbFixture.ConnectionString.EnsureEndsWith('/') +
"Db_" +
Guid.NewGuid().ToString("N");
@@ -20,6 +21,11 @@ namespace MyCompanyName.MyProjectName.MongoDB
{
options.ConnectionStrings.Default = connectionString;
});
+
+ Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
+ });
}
}
}
diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs
index f29c713c05..25db3dbaeb 100644
--- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs
+++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDB/MyProjectNameMongoDbTestModule.cs
@@ -1,6 +1,7 @@
using System;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
+using Volo.Abp.Uow;
namespace MyCompanyName.MyProjectName.MongoDB
{
@@ -12,14 +13,19 @@ namespace MyCompanyName.MyProjectName.MongoDB
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
+ var connectionString = MongoDbFixture.ConnectionString.EnsureEndsWith('/') +
"Db_" +
- Guid.NewGuid().ToString("N");
+ Guid.NewGuid().ToString("N");
Configure(options =>
{
options.ConnectionStrings.Default = connectionString;
});
+
+ Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
+ });
}
}
-}
\ No newline at end of file
+}