diff --git a/Directory.Packages.props b/Directory.Packages.props
index 65e51cbf91..4532f427a9 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -119,7 +119,7 @@
-
+
diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpCustomGuidMapper.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpCustomGuidMapper.cs
new file mode 100644
index 0000000000..58ef742a3d
--- /dev/null
+++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpCustomGuidMapper.cs
@@ -0,0 +1,13 @@
+using System;
+using MongoDB.Bson;
+
+namespace Volo.Abp.MongoDB;
+
+public class AbpCustomGuidMapper : ICustomBsonTypeMapper
+{
+ public bool TryMapToBsonValue(object value, out BsonValue bsonValue)
+ {
+ bsonValue = new BsonBinaryData((Guid)value, GuidRepresentation.Standard);
+ return true;
+ }
+}
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 8e8ad345fc..7563a062f2 100644
--- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs
+++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs
@@ -1,4 +1,5 @@
-using Microsoft.Extensions.DependencyInjection;
+using System;
+using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using MongoDB.Bson;
using MongoDB.Bson.Serialization;
@@ -16,6 +17,12 @@ namespace Volo.Abp.MongoDB;
[DependsOn(typeof(AbpDddDomainModule))]
public class AbpMongoDbModule : AbpModule
{
+ static AbpMongoDbModule()
+ {
+ BsonSerializer.TryRegisterSerializer(new GuidSerializer(GuidRepresentation.Standard));
+ BsonTypeMapper.RegisterCustomTypeMapper(typeof(Guid), new AbpCustomGuidMapper());
+ }
+
public override void PreConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddConventionalRegistrar(new AbpMongoDbConventionalRegistrar());
@@ -23,8 +30,6 @@ public class AbpMongoDbModule : AbpModule
public override void ConfigureServices(ServiceConfigurationContext context)
{
- BsonSerializer.TryRegisterSerializer(new GuidSerializer(GuidRepresentation.Standard));
-
context.Services.TryAddTransient(
typeof(IMongoDbContextProvider<>),
typeof(UnitOfWorkMongoDbContextProvider<>)
diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Repositories/Repository_Basic_Tests.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Repositories/Repository_Basic_Tests.cs
index e2ad9088cb..ca434e989f 100644
--- a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Repositories/Repository_Basic_Tests.cs
+++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Repositories/Repository_Basic_Tests.cs
@@ -3,6 +3,7 @@ using System.Linq;
using System.Threading.Tasks;
using MongoDB.Driver.Linq;
using Shouldly;
+using Volo.Abp.Data;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.TestApp;
using Volo.Abp.TestApp.Domain;
@@ -56,6 +57,7 @@ public class Repository_Basic_Tests : Repository_Basic_Tests p.PersonId == person.Id && p.Number == "1234567890").ShouldBeTrue();
+ person.GetProperty("test-guid-property").ShouldBe(person.Id);
}
-
+
[Fact]
public async Task Filter_Case_Insensitive()
{
(await CityRepository.GetQueryableAsync()).FirstOrDefault(c => c.Name == "ISTANBUL").ShouldBeNull();
(await CityRepository.GetQueryableAsync()).FirstOrDefault(c => c.Name == "istanbul").ShouldBeNull();
(await CityRepository.GetQueryableAsync()).FirstOrDefault(c => c.Name == "Istanbul").ShouldNotBeNull();
-
+
(await PersonRepository.GetQueryableAsync()).FirstOrDefault(p => p.Name == "douglas").ShouldNotBeNull();
(await PersonRepository.GetQueryableAsync()).FirstOrDefault(p => p.Name == "DOUGLAS").ShouldNotBeNull();
(await PersonRepository.GetQueryableAsync()).FirstOrDefault(p => p.Name == "Douglas").ShouldNotBeNull();