增加可选参数,忽略视图模型NUll列更新
parent
3ea3bcf256
commit
f09954686b
|
@ -41,7 +41,7 @@ namespace IRaCIS.Core.Application.AutoMapper
|
||||||
CreateMap<Trial, TrialSurveyInitInfo>()
|
CreateMap<Trial, TrialSurveyInitInfo>()
|
||||||
.ForMember(d => d.Sponsor, u => u.MapFrom(s => s.Sponsor.SponsorName))
|
.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.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));
|
.ForMember(d => d.TrialId, u => u.MapFrom(s => s.Id));
|
||||||
|
|
||||||
CreateMap<TrialSite, TrialSiteForSelect>()
|
CreateMap<TrialSite, TrialSiteForSelect>()
|
||||||
|
|
|
@ -25,6 +25,8 @@ namespace IRaCIS.Application.Services
|
||||||
var c = _dicRepository.Where(t => t.ParentId != null).Select(t => t.MappedValue).First();
|
var c = _dicRepository.Where(t => t.ParentId != null).Select(t => t.MappedValue).First();
|
||||||
CultureInfo culture = CultureInfo.CurrentUICulture;
|
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 a = 123;
|
||||||
|
|
||||||
var b = _localizer["test{0}", "测试"];
|
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> 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
|
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,
|
public async Task<TEntity> UpdateFromDTOAsync<TFrom>(TFrom from, bool autoSave = false, bool ignoreDtoNullProperty = true, params EntityVerifyExp<TEntity>[] verify)
|
||||||
params EntityVerifyExp<TEntity>[] verify)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
var entity = _mapper.Map<TEntity>(from);
|
var entity = _mapper.Map<TEntity>(from);
|
||||||
|
@ -164,12 +163,29 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
|
|
||||||
var dbBeforEntity = dbEntity.Clone();
|
var dbBeforEntity = dbEntity.Clone();
|
||||||
|
|
||||||
|
|
||||||
_mapper.Map(from, dbEntity);
|
_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)
|
if (autoSave)
|
||||||
{
|
{
|
||||||
await SaveChangesAsync();
|
await SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return dbBeforEntity;
|
return dbBeforEntity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue