From 409ecffce83372f7c850a87634602c31b090e87f Mon Sep 17 00:00:00 2001 From: Ali Yousefi Date: Tue, 14 Nov 2023 16:31:01 +0330 Subject: [PATCH 1/5] fix deserialize errors --- .../UnitOfWork.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/CSharp/EasyMicroservices.Cores.AspEntityFrameworkCoreApi/UnitOfWork.cs b/src/CSharp/EasyMicroservices.Cores.AspEntityFrameworkCoreApi/UnitOfWork.cs index d660359..dbf49a8 100644 --- a/src/CSharp/EasyMicroservices.Cores.AspEntityFrameworkCoreApi/UnitOfWork.cs +++ b/src/CSharp/EasyMicroservices.Cores.AspEntityFrameworkCoreApi/UnitOfWork.cs @@ -13,6 +13,7 @@ using EasyMicroservices.Mapper.SerializerMapper.Providers; using EasyMicroservices.Serialization.Newtonsoft.Json.Providers; using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json.Serialization; using System; using System.Collections.Generic; using System.Linq; @@ -294,7 +295,8 @@ public virtual IMapperProvider GetMapper() { var mapper = new CompileTimeMapperProvider(new SerializerMapperProvider(new NewtonsoftJsonProvider(new Newtonsoft.Json.JsonSerializerSettings() { - ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore + ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore, + Error = HandleDeserializationError }))); if (MapperTypeAssembly != null) { @@ -311,6 +313,17 @@ public virtual IMapperProvider GetMapper() return mapper; } + /// + /// + /// + /// + /// + public virtual void HandleDeserializationError(object sender, ErrorEventArgs errorArgs) + { + //var currentError = errorArgs.ErrorContext.Error.Message; + errorArgs.ErrorContext.Handled = true; + } + /// /// /// From aab1151ec3c36786ae842f8b86fb2d9da295ee2a Mon Sep 17 00:00:00 2001 From: Ali Yousefi Date: Tue, 14 Nov 2023 16:31:28 +0330 Subject: [PATCH 2/5] Add default values for properties and add Text property --- .../Contracts/Requests/FilterRequestContract.cs | 8 ++++++-- .../Contracts/Requests/SoftDeleteRequestContract.cs | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/CSharp/EasyMicroservices.Cores.Contracts/Contracts/Requests/FilterRequestContract.cs b/src/CSharp/EasyMicroservices.Cores.Contracts/Contracts/Requests/FilterRequestContract.cs index 8b70411..53bb422 100644 --- a/src/CSharp/EasyMicroservices.Cores.Contracts/Contracts/Requests/FilterRequestContract.cs +++ b/src/CSharp/EasyMicroservices.Cores.Contracts/Contracts/Requests/FilterRequestContract.cs @@ -11,7 +11,7 @@ public class FilterRequestContract /// /// /// - public bool? IsDeleted { get; set; } + public bool? IsDeleted { get; set; } = false; /// /// /// @@ -57,10 +57,14 @@ public class FilterRequestContract /// /// /// - public string SortColumnName { get; set; } + public string SortColumnNames { get; set; } /// /// /// public bool IsDescending { get; set; } + /// + /// text to search + /// + public string Text { get; set; } } } diff --git a/src/CSharp/EasyMicroservices.Cores.Contracts/Contracts/Requests/SoftDeleteRequestContract.cs b/src/CSharp/EasyMicroservices.Cores.Contracts/Contracts/Requests/SoftDeleteRequestContract.cs index 92f79d9..9dd2210 100644 --- a/src/CSharp/EasyMicroservices.Cores.Contracts/Contracts/Requests/SoftDeleteRequestContract.cs +++ b/src/CSharp/EasyMicroservices.Cores.Contracts/Contracts/Requests/SoftDeleteRequestContract.cs @@ -8,7 +8,7 @@ public class SoftDeleteRequestContract : DeleteRequestContract /// /// /// - public bool IsDelete { get; set; } + public bool IsDelete { get; set; } = true; /// /// From a6cda781cf76da609cf0326922eba9fba540ba04 Mon Sep 17 00:00:00 2001 From: Ali Yousefi Date: Tue, 14 Nov 2023 16:32:16 +0330 Subject: [PATCH 3/5] update packages --- .../EasyMicroservices.Cores.AspCore.Tests.csproj | 2 +- .../EasyMicroservices.Cores.Tests.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CSharp/EasyMicroservices.Cores.AspCore.Tests/EasyMicroservices.Cores.AspCore.Tests.csproj b/src/CSharp/EasyMicroservices.Cores.AspCore.Tests/EasyMicroservices.Cores.AspCore.Tests.csproj index 3c54c85..5df1faf 100644 --- a/src/CSharp/EasyMicroservices.Cores.AspCore.Tests/EasyMicroservices.Cores.AspCore.Tests.csproj +++ b/src/CSharp/EasyMicroservices.Cores.AspCore.Tests/EasyMicroservices.Cores.AspCore.Tests.csproj @@ -13,7 +13,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/CSharp/EasyMicroservices.Cores.Tests/EasyMicroservices.Cores.Tests.csproj b/src/CSharp/EasyMicroservices.Cores.Tests/EasyMicroservices.Cores.Tests.csproj index 803688a..a2ccdb3 100644 --- a/src/CSharp/EasyMicroservices.Cores.Tests/EasyMicroservices.Cores.Tests.csproj +++ b/src/CSharp/EasyMicroservices.Cores.Tests/EasyMicroservices.Cores.Tests.csproj @@ -16,7 +16,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all From d4c5e659fe259a9641a9c03f219293c26ae09f52 Mon Sep 17 00:00:00 2001 From: Ali Yousefi Date: Tue, 14 Nov 2023 16:33:58 +0330 Subject: [PATCH 4/5] update packages --- .../EasyMicroservices.Cores.Database.csproj | 2 +- .../EasyMicroservices.Cores.EntityFrameworkCore.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CSharp/EasyMicroservices.Cores.Database/EasyMicroservices.Cores.Database.csproj b/src/CSharp/EasyMicroservices.Cores.Database/EasyMicroservices.Cores.Database.csproj index 242d913..582ed7d 100644 --- a/src/CSharp/EasyMicroservices.Cores.Database/EasyMicroservices.Cores.Database.csproj +++ b/src/CSharp/EasyMicroservices.Cores.Database/EasyMicroservices.Cores.Database.csproj @@ -20,7 +20,7 @@ - + diff --git a/src/CSharp/EasyMicroservices.Cores.EntityFrameworkCore/EasyMicroservices.Cores.EntityFrameworkCore.csproj b/src/CSharp/EasyMicroservices.Cores.EntityFrameworkCore/EasyMicroservices.Cores.EntityFrameworkCore.csproj index 40c4968..ee052cf 100644 --- a/src/CSharp/EasyMicroservices.Cores.EntityFrameworkCore/EasyMicroservices.Cores.EntityFrameworkCore.csproj +++ b/src/CSharp/EasyMicroservices.Cores.EntityFrameworkCore/EasyMicroservices.Cores.EntityFrameworkCore.csproj @@ -17,7 +17,7 @@ - + From 2fdffb75f0e1778978cc6935407a93260ccfdff3 Mon Sep 17 00:00:00 2001 From: Ali Yousefi Date: Wed, 15 Nov 2023 06:36:35 +0330 Subject: [PATCH 5/5] Improvement map performance --- .../EasyMicroservices.Cores.AspCoreApi.csproj | 2 +- ...ces.Cores.AspEntityFrameworkCoreApi.csproj | 2 +- .../EasyMicroservices.Cores.Contracts.csproj | 2 +- .../Logics/DatabaseLogicInfrastructure.cs | 71 +++++++++++++------ .../Logics/DatabaseMappedLogicBase.cs | 3 +- .../EasyMicroservices.Cores.Database.csproj | 2 +- ...oservices.Cores.EntityFrameworkCore.csproj | 2 +- ...ores.Relational.EntityFrameworkCore.csproj | 2 +- 8 files changed, 55 insertions(+), 31 deletions(-) diff --git a/src/CSharp/EasyMicroservices.Cores.AspCoreApi/EasyMicroservices.Cores.AspCoreApi.csproj b/src/CSharp/EasyMicroservices.Cores.AspCoreApi/EasyMicroservices.Cores.AspCoreApi.csproj index 679b491..33b7efa 100644 --- a/src/CSharp/EasyMicroservices.Cores.AspCoreApi/EasyMicroservices.Cores.AspCoreApi.csproj +++ b/src/CSharp/EasyMicroservices.Cores.AspCoreApi/EasyMicroservices.Cores.AspCoreApi.csproj @@ -5,7 +5,7 @@ AnyCPU;x64;x86 EasyMicroservices true - 0.0.0.46 + 0.0.0.47 asp core servces. EasyMicroservices@gmail.com core,cores,base,database,services,asp,aspnet diff --git a/src/CSharp/EasyMicroservices.Cores.AspEntityFrameworkCoreApi/EasyMicroservices.Cores.AspEntityFrameworkCoreApi.csproj b/src/CSharp/EasyMicroservices.Cores.AspEntityFrameworkCoreApi/EasyMicroservices.Cores.AspEntityFrameworkCoreApi.csproj index c26d2ac..22a99cf 100644 --- a/src/CSharp/EasyMicroservices.Cores.AspEntityFrameworkCoreApi/EasyMicroservices.Cores.AspEntityFrameworkCoreApi.csproj +++ b/src/CSharp/EasyMicroservices.Cores.AspEntityFrameworkCoreApi/EasyMicroservices.Cores.AspEntityFrameworkCoreApi.csproj @@ -5,7 +5,7 @@ AnyCPU;x64;x86 EasyMicroservices true - 0.0.0.46 + 0.0.0.47 asp core servces. EasyMicroservices@gmail.com core,cores,base,database,services,asp,aspnet,aspcore,efcore diff --git a/src/CSharp/EasyMicroservices.Cores.Contracts/EasyMicroservices.Cores.Contracts.csproj b/src/CSharp/EasyMicroservices.Cores.Contracts/EasyMicroservices.Cores.Contracts.csproj index 46c10e0..be30312 100644 --- a/src/CSharp/EasyMicroservices.Cores.Contracts/EasyMicroservices.Cores.Contracts.csproj +++ b/src/CSharp/EasyMicroservices.Cores.Contracts/EasyMicroservices.Cores.Contracts.csproj @@ -5,7 +5,7 @@ AnyCPU;x64;x86 EasyMicroservices true - 0.0.0.46 + 0.0.0.47 core contracts. EasyMicroservices@gmail.com core,cores,base,contract,contracts,dto,dtos diff --git a/src/CSharp/EasyMicroservices.Cores.Database/Database/Logics/DatabaseLogicInfrastructure.cs b/src/CSharp/EasyMicroservices.Cores.Database/Database/Logics/DatabaseLogicInfrastructure.cs index 87a3bd5..abf4b69 100644 --- a/src/CSharp/EasyMicroservices.Cores.Database/Database/Logics/DatabaseLogicInfrastructure.cs +++ b/src/CSharp/EasyMicroservices.Cores.Database/Database/Logics/DatabaseLogicInfrastructure.cs @@ -215,8 +215,7 @@ public async Task> GetBy(IEasyRea var entityResult = await GetBy(easyReadableQueryable, predicate, query, true, cancellationToken); if (!entityResult) return entityResult.ToContract(); - var result = await _mapperProvider.MapAsync(entityResult.Result); - ValidateMappedResult(ref result); + var result = await MapAsync(entityResult.Result); return result; } @@ -238,8 +237,7 @@ protected async Task> GetById(); - var result = await _mapperProvider.MapAsync(entityResult.Result); - ValidateMappedResult(ref result); + var result = await MapAsync(entityResult.Result); return result; } @@ -263,8 +261,7 @@ public async Task> GetByUniqueIdentity(); - var result = await _mapperProvider.MapAsync(entityResult.Result); - ValidateMappedResult(ref result); + var result = await MapAsync(entityResult.Result); return result; } @@ -335,8 +332,7 @@ protected async Task> Filter( var entityResult = await Filter(filterRequest, easyReadableQueryable, query, cancellationToken); if (!entityResult) return entityResult.ToAnotherListContract(); - var result = await _mapperProvider.MapToListAsync(entityResult.Result); - ValidateMappedResult(ref result); + var result = await MapToListAsync(entityResult.Result); return result; } @@ -377,8 +373,7 @@ protected async Task> GetAll( var entityResult = await GetAll(easyReadableQueryable, query, cancellationToken); if (!entityResult) return entityResult.ToAnotherListContract(); - var result = await _mapperProvider.MapToListAsync(entityResult.Result); - ValidateMappedResult(ref result); + var result = await MapToListAsync(entityResult.Result); return result; } @@ -402,8 +397,7 @@ public async Task> GetAllByUniqueIdentity(); - var result = await _mapperProvider.MapToListAsync(entityResult.Result); - ValidateMappedResult(ref result); + var result = await MapToListAsync(entityResult.Result); return result; } @@ -474,13 +468,11 @@ private async Task> InternalUpdateBulk(IEa public async Task> Update(IEasyWritableQueryableAsync easyWritableQueryable, TUpdateContract contract, CancellationToken cancellationToken = default) where TEntity : class { - var entity = await _mapperProvider.MapAsync(contract); - ValidateMappedResult(ref entity); + var entity = await MapAsync(contract); var result = await Update(easyWritableQueryable, entity, cancellationToken); if (!result) return result.ToContract(); - var mappedResult = await _mapperProvider.MapAsync(result.Result); - ValidateMappedResult(ref mappedResult); + var mappedResult = await MapAsync(result.Result); return mappedResult; } @@ -496,8 +488,7 @@ public async Task> Update UpdateBulk(IEasyWritableQueryableAsync easyWritableQueryable, UpdateBulkRequestContract request, CancellationToken cancellationToken = default) where TEntity : class { - var entities = await _mapperProvider.MapToListAsync(request.Items); - ValidateMappedResult(ref entities); + var entities = await MapToListAsync(request.Items); var result = await InternalUpdateBulk(easyWritableQueryable, entities, cancellationToken, false, true); return result; } @@ -740,8 +731,7 @@ public async Task AddBulk(IEasyWritableQueryableAsync< public async Task> Add(IEasyWritableQueryableAsync easyWritableQueryable, TContract contract, CancellationToken cancellationToken = default) where TEntity : class { - var entity = await _mapperProvider.MapAsync(contract); - ValidateMappedResult(ref entity); + var entity = await MapAsync(contract); var result = await Add(easyWritableQueryable, entity, cancellationToken); return result; } @@ -758,9 +748,44 @@ public async Task> Add(IEasyWritabl public async Task AddBulk(IEasyWritableQueryableAsync easyWritableQueryable, CreateBulkRequestContract request, CancellationToken cancellationToken = default) where TEntity : class { - var entities = await _mapperProvider.MapToListAsync(request.Items); - ValidateMappedResult(ref entities); - var result = await AddBulk(easyWritableQueryable, entities, cancellationToken); + var entities = await MapToListAsync(request.Items); + var result = await AddBulk(easyWritableQueryable, entities, cancellationToken); + return result; + } + + #endregion + + #region Map + + /// + /// + /// + /// + /// + /// + /// + protected async Task> MapToListAsync(IEnumerable items) + { + if (typeof(TFrom) == typeof(TTo)) + return items.Cast().ToList(); + var result = await _mapperProvider.MapToListAsync(items); + ValidateMappedResult(ref result); + return result; + } + + /// + /// + /// + /// + /// + /// + /// + protected async Task MapAsync(TFrom item) + { + if (typeof(TFrom) == typeof(TTo)) + return (TTo)(object)item; + var result = await _mapperProvider.MapAsync(item); + ValidateMappedResult(ref result); return result; } diff --git a/src/CSharp/EasyMicroservices.Cores.Database/Database/Logics/DatabaseMappedLogicBase.cs b/src/CSharp/EasyMicroservices.Cores.Database/Database/Logics/DatabaseMappedLogicBase.cs index aa2328b..a40539e 100644 --- a/src/CSharp/EasyMicroservices.Cores.Database/Database/Logics/DatabaseMappedLogicBase.cs +++ b/src/CSharp/EasyMicroservices.Cores.Database/Database/Logics/DatabaseMappedLogicBase.cs @@ -6,7 +6,6 @@ using EasyMicroservices.Mapper.Interfaces; using EasyMicroservices.ServiceContracts; using System; -using System.Diagnostics.Contracts; using System.Linq; using System.Linq.Expressions; using System.Threading; @@ -112,7 +111,7 @@ public async Task> Add(TCreateRequestContract var result = await Add(_easyWriteableQueryable, contract, cancellationToken); if (!result) return result.ToContract(); - var mapped = await _mapperProvider.MapAsync(result.Result); + var mapped = await MapAsync(result.Result); ValidateMappedResult(ref mapped); return mapped; } diff --git a/src/CSharp/EasyMicroservices.Cores.Database/EasyMicroservices.Cores.Database.csproj b/src/CSharp/EasyMicroservices.Cores.Database/EasyMicroservices.Cores.Database.csproj index 582ed7d..4b3176e 100644 --- a/src/CSharp/EasyMicroservices.Cores.Database/EasyMicroservices.Cores.Database.csproj +++ b/src/CSharp/EasyMicroservices.Cores.Database/EasyMicroservices.Cores.Database.csproj @@ -5,7 +5,7 @@ AnyCPU;x64;x86 EasyMicroservices true - 0.0.0.46 + 0.0.0.47 core of database. EasyMicroservices@gmail.com core,cores,base,database diff --git a/src/CSharp/EasyMicroservices.Cores.EntityFrameworkCore/EasyMicroservices.Cores.EntityFrameworkCore.csproj b/src/CSharp/EasyMicroservices.Cores.EntityFrameworkCore/EasyMicroservices.Cores.EntityFrameworkCore.csproj index ee052cf..c096adc 100644 --- a/src/CSharp/EasyMicroservices.Cores.EntityFrameworkCore/EasyMicroservices.Cores.EntityFrameworkCore.csproj +++ b/src/CSharp/EasyMicroservices.Cores.EntityFrameworkCore/EasyMicroservices.Cores.EntityFrameworkCore.csproj @@ -5,7 +5,7 @@ AnyCPU;x64;x86 EasyMicroservices true - 0.0.0.46 + 0.0.0.47 ef core of database. EasyMicroservices@gmail.com core,cores,base,database,ef,efcore diff --git a/src/CSharp/EasyMicroservices.Cores.Relational.EntityFrameworkCore/EasyMicroservices.Cores.Relational.EntityFrameworkCore.csproj b/src/CSharp/EasyMicroservices.Cores.Relational.EntityFrameworkCore/EasyMicroservices.Cores.Relational.EntityFrameworkCore.csproj index c5e7edf..b8f1205 100644 --- a/src/CSharp/EasyMicroservices.Cores.Relational.EntityFrameworkCore/EasyMicroservices.Cores.Relational.EntityFrameworkCore.csproj +++ b/src/CSharp/EasyMicroservices.Cores.Relational.EntityFrameworkCore/EasyMicroservices.Cores.Relational.EntityFrameworkCore.csproj @@ -5,7 +5,7 @@ AnyCPU;x64;x86 EasyMicroservices true - 0.0.0.46 + 0.0.0.47 ef core of Relational database. EasyMicroservices@gmail.com core,cores,base,database,ef,efcore,Relational