调整 仓储,提出独立的添加和更新
parent
4cbb37e1b5
commit
4cc64e1e21
|
@ -47,7 +47,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
VerifyMsg = "Document Code Can not Repeat."
|
VerifyMsg = "Document Code Can not Repeat."
|
||||||
};
|
};
|
||||||
|
|
||||||
var entity = await _commonDocumentRepository.InsertOrUpdateAsync(addOrEditCommonDocument, true, verifyExp1);
|
var entity = await _commonDocumentRepository.InsertFromDTOAsync(addOrEditCommonDocument, true, verifyExp1);
|
||||||
|
|
||||||
return ResponseOutput.Ok(entity.Id.ToString());
|
return ResponseOutput.Ok(entity.Id.ToString());
|
||||||
|
|
||||||
|
|
|
@ -45,13 +45,6 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
|
|
||||||
#region IModelCacheKeyFactory
|
#region IModelCacheKeyFactory
|
||||||
|
|
||||||
//public class DynamicModelCacheKeyFactory : IModelCacheKeyFactory
|
|
||||||
//{
|
|
||||||
// public object Create(DbContext context)
|
|
||||||
// => context is IRaCISDBContext dynamicContext
|
|
||||||
// ? (context.GetType(), dynamicContext._userInfo.IsEn_Us)
|
|
||||||
// : (object)context.GetType();
|
|
||||||
//}
|
|
||||||
|
|
||||||
public class DynamicModelCacheKeyFactoryDesignTimeSupport : IModelCacheKeyFactory
|
public class DynamicModelCacheKeyFactoryDesignTimeSupport : IModelCacheKeyFactory
|
||||||
{
|
{
|
||||||
|
@ -82,8 +75,8 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//modelBuilder.Entity<User>().Property(t => t.FullName) .HasComputedColumnSql("[LastName] + ' / ' + [FirstName]",false);
|
modelBuilder.Entity<User>().Property(t => t.FullName) .HasDefaultValueSql("[LastName] + ' / ' + [FirstName]");
|
||||||
//modelBuilder.Entity<User>().Ignore(t => t.FullName);
|
modelBuilder.Entity<User>().Property(e => e.FullName).Metadata.SetBeforeSaveBehavior(PropertySaveBehavior.Ignore);
|
||||||
|
|
||||||
|
|
||||||
//遍历实体模型手动配置
|
//遍历实体模型手动配置
|
||||||
|
|
|
@ -11,9 +11,15 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
{
|
{
|
||||||
public interface ICommandRepository<TEntity>: ICommandRepository<TEntity, Guid> where TEntity : Entity
|
public interface ICommandRepository<TEntity>: ICommandRepository<TEntity, Guid> where TEntity : Entity
|
||||||
{
|
{
|
||||||
Task<TEntity> InsertDictionaryAsync<TFrom>(TFrom from, params EntityVerifyExp<TEntity>[] verify);
|
//Task<TEntity> InsertDictionaryAsync<TFrom>(TFrom from, params EntityVerifyExp<TEntity>[] verify);
|
||||||
Task<TEntity> InsertOrUpdateAsync<TFrom>(TFrom from, bool autoSave = false, params EntityVerifyExp<TEntity>[] verify);
|
Task<TEntity> InsertOrUpdateAsync<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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface ICommandRepository<TEntity, TKey> where TEntity : class
|
public interface ICommandRepository<TEntity, TKey> where TEntity : class
|
||||||
|
|
|
@ -97,8 +97,19 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
|
|
||||||
if (entity.Id == Guid.Empty)
|
if (entity.Id == Guid.Empty)
|
||||||
{
|
{
|
||||||
|
return await InsertFromDTOAsync(from, autoSave, verify);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return await UpdateFromDTOAsync(from, autoSave, verify);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async Task<TEntity> InsertFromDTOAsync<TFrom>(TFrom from, bool autoSave = false, params EntityVerifyExp<TEntity>[] verify)
|
||||||
|
{
|
||||||
|
var entity = _mapper.Map<TEntity>(from);
|
||||||
|
|
||||||
foreach (var verifyItem in verify.Where(t => t.verifyType != VerifyEnum.OnlyUpdate && t.IsVerify))
|
foreach (var verifyItem in verify.Where(t => t.verifyType != VerifyEnum.OnlyUpdate && t.IsVerify))
|
||||||
{
|
{
|
||||||
if (await _dbSet.IgnoreQueryFilters().AnyAsync(verifyItem.VerifyExp).ConfigureAwait(false))
|
if (await _dbSet.IgnoreQueryFilters().AnyAsync(verifyItem.VerifyExp).ConfigureAwait(false))
|
||||||
|
@ -117,9 +128,13 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
return entity;
|
return entity;
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
|
||||||
|
public async Task<TEntity> UpdateFromDTOAsync<TFrom>(TFrom from, bool autoSave = false,
|
||||||
|
params EntityVerifyExp<TEntity>[] verify)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
var entity = _mapper.Map<TEntity>(from);
|
||||||
|
|
||||||
foreach (var verifyItem in verify.Where(t => t.verifyType != VerifyEnum.OnlyAdd && t.IsVerify))
|
foreach (var verifyItem in verify.Where(t => t.verifyType != VerifyEnum.OnlyAdd && t.IsVerify))
|
||||||
{
|
{
|
||||||
|
@ -141,6 +156,12 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
|
|
||||||
var dbEntity = await _dbSet.IgnoreQueryFilters().FirstOrDefaultAsync(t => t.Id == entity.Id).ConfigureAwait(false);
|
var dbEntity = await _dbSet.IgnoreQueryFilters().FirstOrDefaultAsync(t => t.Id == entity.Id).ConfigureAwait(false);
|
||||||
|
|
||||||
|
if (dbEntity == null)
|
||||||
|
{
|
||||||
|
throw new BusinessValidationFailedException(
|
||||||
|
" Update object not exist in db,Please check if the parameter Id is passed incorrectly");
|
||||||
|
}
|
||||||
|
|
||||||
var dbBeforEntity = dbEntity.Clone();
|
var dbBeforEntity = dbEntity.Clone();
|
||||||
|
|
||||||
_mapper.Map(from, dbEntity);
|
_mapper.Map(from, dbEntity);
|
||||||
|
@ -150,9 +171,9 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
await SaveChangesAsync();
|
await SaveChangesAsync();
|
||||||
}
|
}
|
||||||
return dbBeforEntity;
|
return dbBeforEntity;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<bool> SaveChangesAsync(CancellationToken cancellationToken = default)
|
public async Task<bool> SaveChangesAsync(CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
|
@ -198,6 +219,8 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
|
|
||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public async Task<IEnumerable<TEntity>> AddRangeAsync(IEnumerable<TEntity> entities)
|
public async Task<IEnumerable<TEntity>> AddRangeAsync(IEnumerable<TEntity> entities)
|
||||||
{
|
{
|
||||||
await _dbSet.AddRangeAsync(entities).ConfigureAwait(false);
|
await _dbSet.AddRangeAsync(entities).ConfigureAwait(false);
|
||||||
|
|
Loading…
Reference in New Issue