增加可选参数,忽略视图模型NUll列更新

Uat_Study
hang 2022-04-15 13:32:40 +08:00
parent 3ea3bcf256
commit f09954686b
4 changed files with 24 additions and 5 deletions

View File

@ -41,7 +41,7 @@ namespace IRaCIS.Core.Application.AutoMapper
CreateMap<Trial, TrialSurveyInitInfo>()
.ForMember(d => d.Sponsor, u => u.MapFrom(s => s.Sponsor.SponsorName))
.ForMember(d => d.IndicationType, u => u.MapFrom(s => s.IndicationType.Value))
.ForMember(d => d.TrialSiteSelectList, u => u.MapFrom(s => s.TrialSiteList))
.ForMember(d => d.TrialSiteSelectList, u => u.MapFrom(s => s.TrialSiteList.Where(t=>t.TrialSiteCode.Length>0)))
.ForMember(d => d.TrialId, u => u.MapFrom(s => s.Id));
CreateMap<TrialSite, TrialSiteForSelect>()

View File

@ -25,6 +25,8 @@ namespace IRaCIS.Application.Services
var c = _dicRepository.Where(t => t.ParentId != null).Select(t => t.MappedValue).First();
CultureInfo culture = CultureInfo.CurrentUICulture;
var d= _dicRepository.UpdateFromDTOAsync(new AddOrEditBasicDic() { Id =Guid.Parse("60d86683-c33b-4349-b672-08da1e91b622"), ParentId = null,ChildGroup = null,Code = null},true,true).Result;
var a = 123;
var b = _localizer["test{0}", "测试"];

View File

@ -18,7 +18,8 @@ namespace IRaCIS.Core.Infra.EFCore
Task<TEntity> InsertFromDTOAsync<TFrom>(TFrom from, bool autoSave = false, params EntityVerifyExp<TEntity>[] verify);
Task<TEntity> UpdateFromDTOAsync<TFrom>(TFrom from, bool autoSave = false, params EntityVerifyExp<TEntity>[] verify);
Task<TEntity> UpdateFromDTOAsync<TFrom>(TFrom from, bool autoSave = false, bool ignoreDtoNullProperty = true, params EntityVerifyExp<TEntity>[] verify);
}

View File

@ -101,7 +101,7 @@ namespace IRaCIS.Core.Infra.EFCore
}
else
{
return await UpdateFromDTOAsync(from, autoSave, verify);
return await UpdateFromDTOAsync(from, autoSave,false, verify);
}
}
@ -130,8 +130,7 @@ namespace IRaCIS.Core.Infra.EFCore
}
public async Task<TEntity> UpdateFromDTOAsync<TFrom>(TFrom from, bool autoSave = false,
params EntityVerifyExp<TEntity>[] verify)
public async Task<TEntity> UpdateFromDTOAsync<TFrom>(TFrom from, bool autoSave = false, bool ignoreDtoNullProperty = true, params EntityVerifyExp<TEntity>[] verify)
{
var entity = _mapper.Map<TEntity>(from);
@ -164,12 +163,29 @@ namespace IRaCIS.Core.Infra.EFCore
var dbBeforEntity = dbEntity.Clone();
_mapper.Map(from, dbEntity);
//DTO null 属性不更新 防止意外操作,导致保存数据错误,或者 add 和update 用一个模型更新的时候只传递了部分字段导致不想更新的字段因为没传递值用null覆盖了
// Guid属性 为null 时 映射到 Guid 时 默认会变成 Guid.Empty
if (ignoreDtoNullProperty)
{
foreach (var propertyInfo in from.GetType().GetProperties())
{
if (propertyInfo.GetValue(from) == null)
{
_dbContext.Entry(dbEntity).Property(propertyInfo.Name).IsModified = false;
}
}
}
if (autoSave)
{
await SaveChangesAsync();
}
return dbBeforEntity;
}