public virtual async Task <I> UpdateAsync(I entity) { entity.CheckArgument(nameof(entity)); entity.FirstItem.CheckArgument(nameof(entity.FirstItem)); entity.SecondItem.CheckArgument(nameof(entity.SecondItem)); var result = new E(); var updFirst = await FirstEntityController.UpdateAsync(entity.FirstItem).ConfigureAwait(false); result.FirstEntity.CopyProperties(updFirst); if (entity.SecondItem.Id == 0) { var pi = GetForeignKeyToOne(); if (pi != null) { pi.SetValue(entity.SecondItem, result.FirstEntity.Id); } var insSecond = await SecondEntityController.InsertAsync(entity.SecondItem).ConfigureAwait(false); result.SecondEntity.CopyProperties(insSecond); } else { var updSecond = await SecondEntityController.UpdateAsync(entity.SecondItem).ConfigureAwait(false); result.SecondEntity.CopyProperties(updSecond); } return(result); }
protected override void Dispose(bool disposing) { base.Dispose(disposing); if (disposing) { FirstEntityController.Dispose(); SecondEntityController.Dispose(); FirstEntityController = null; SecondEntityController = null; } }
public virtual async Task DeleteAsync(int id) { var entity = await GetByIdAsync(id).ConfigureAwait(false); if (entity != null) { if (entity.SecondItem.Id > 0) { await SecondEntityController.DeleteAsync(entity.SecondItem.Id).ConfigureAwait(false); } await FirstEntityController.DeleteAsync(entity.Id).ConfigureAwait(false); } else { throw new LogicException(ErrorType.InvalidId); } }
public virtual Task <IQueryable <I> > QueryAllAsync(string predicate) { return(Task.Run(async() => { List <I> result = new List <I>(); foreach (var item in (await FirstEntityController.QueryAllAsync(predicate).ConfigureAwait(false)).ToList()) { E entity = new E(); entity.FirstItem.CopyProperties(item); await LoadSecondAsync(entity, item.Id).ConfigureAwait(false); result.Add(entity); } return result.AsQueryable(); })); }
public virtual Task <IQueryable <I> > GetPageListAsync(int pageIndex, int pageSize) { return(Task.Run(async() => { List <I> result = new List <I>(); foreach (var item in (await FirstEntityController.GetPageListAsync(pageIndex, pageSize).ConfigureAwait(false)).ToList()) { E entity = new E(); entity.FirstItem.CopyProperties(item); await LoadSecondAsync(entity, item.Id).ConfigureAwait(false); result.Add(entity); } return result.AsQueryable(); })); }
public virtual async Task <I> GetByIdAsync(int id) { var result = default(E); var firstEntity = await FirstEntityController.GetByIdAsync(id).ConfigureAwait(false); if (firstEntity != null) { var predicate = $"{typeof(TFirstEntity).Name}Id == {firstEntity.Id}"; result = new E(); result.FirstItem.CopyProperties(firstEntity); await LoadSecondAsync(result, firstEntity.Id).ConfigureAwait(false); } else { throw new LogicException(ErrorType.InvalidId); } return(result); }
public virtual async Task <I> InsertAsync(I entity) { entity.CheckArgument(nameof(entity)); entity.FirstItem.CheckArgument(nameof(entity.FirstItem)); entity.SecondItem.CheckArgument(nameof(entity.SecondItem)); var result = new E(); result.FirstEntity.CopyProperties(entity.FirstItem); await FirstEntityController.InsertAsync(result.FirstEntity).ConfigureAwait(false); result.SecondEntity.CopyProperties(entity.SecondItem); var pi = GetNavigationToOne(); if (pi != null) { pi.SetValue(result.SecondEntity, result.FirstEntity); } await SecondEntityController.InsertAsync(result.SecondEntity).ConfigureAwait(false); return(result); }
public virtual Task <int> CountByAsync(string predicate) { return(FirstEntityController.CountByAsync(predicate)); }
public virtual Task <int> CountAsync() { return(FirstEntityController.CountAsync()); }