/// <summary> /// determines if it contains a value /// </summary> /// <param name="query">query model</param> /// <returns></returns> public CheckExistResult Exist(IQuery query) { var dataPackages = GetDataPackages(query); CheckExistResult result = new CheckExistResult() { IsExist = dataPackages?.Any(c => c.Operate != WarehouseDataOperate.Remove) ?? false }; if (!result.IsExist) { var sourceDatas = dataPackages.Where(c => c.LifeSource == DataLifeSource.DataSource); if (!sourceDatas.IsNullOrEmpty()) { QueryFactory.AppendEntityIdentityCondition(sourceDatas.Select(c => c.PersistentData), query, true); } result.CheckQuery = query; } return(result); }
/// <summary> /// compute sum value /// </summary> /// <typeparam name="VT"></typeparam> /// <param name="query"></param> /// <returns></returns> public ComputeResult <VT> Sum <VT>(IQuery query) { if (query == null || query.QueryFields.IsNullOrEmpty()) { return(new ComputeResult <VT>() { Value = default(VT), ComputeQuery = query }); } var dataPackages = GetDataPackages(query); string propertyName = query.QueryFields.ElementAt(0); var nowDataPackages = dataPackages.Where(c => c.Operate != WarehouseDataOperate.Remove); dynamic value; if (nowDataPackages.IsNullOrEmpty()) { value = default(VT); } else { value = nowDataPackages.Sum(c => (dynamic)c.WarehouseData.GetPropertyValue <VT>(propertyName)); } var result = new ComputeResult <VT>() { Value = value }; var sourceDatas = dataPackages.Where(c => c.LifeSource == DataLifeSource.DataSource); if (!sourceDatas.IsNullOrEmpty()) { QueryFactory.AppendEntityIdentityCondition(sourceDatas.Select(c => c.PersistentData), query, true); } result.ComputeQuery = query; return(result); }
/// <summary> /// delete data /// </summary> /// <param name="obj">obj</param> /// <returns></returns> public virtual async Task <ICommand> DeleteAsync(T obj) { return(await DeleteAsync(QueryFactory.AppendEntityIdentityCondition(obj)).ConfigureAwait(false)); }
/// <summary> /// delete data /// </summary> /// <param name="obj">obj</param> /// <returns></returns> public virtual ICommand Delete(T obj) { return(Delete(QueryFactory.AppendEntityIdentityCondition(obj))); }
/// <summary> /// edit data /// </summary> /// <param name="newData">new data</param> /// <param name="oldData">old data</param> /// <returns></returns> public virtual async Task <ICommand> ModifyAsync(T newData, T oldData) { return(await ModifyAsync(newData, oldData, QueryFactory.AppendEntityIdentityCondition(newData)).ConfigureAwait(false)); }