增加可选参数,忽略视图模型NUll列更新
parent
3ea3bcf256
commit
f09954686b
|
@ -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>()
|
||||
|
|
|
@ -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}", "测试"];
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue