internal async Task RemoveSelectedItems(IEnumerable <int> lst) { try { int ASYCUDA_Id = 0; using (var ctx = new DocumentItemDSContext() { StartTracking = true }) { foreach (var item_id in lst) { var item = ctx.xcuda_Item.Include(x => x.xcuda_PreviousItem).FirstOrDefault(x => x.Item_Id == item_id); if (item != null) { if (ASYCUDA_Id == 0) { ASYCUDA_Id = item.ASYCUDA_Id; } ctx.xcuda_Item.Remove(item); } } ctx.SaveChanges(); } await ReorderDocumentItems(ASYCUDA_Id); } catch (Exception) { throw; } }
public static async Task ReorderDocumentItems(int ASYCUDA_Id) { List <xcuda_Item> rlst; using (var ctx = new xcuda_ItemService()) { rlst = (await ctx.Getxcuda_ItemByExpression(string.Format("ASYCUDA_Id == {0}", ASYCUDA_Id), new List <string>() { "xcuda_PreviousItem" }) .ConfigureAwait(false)) .OrderBy(x => x.LineNumber) .ToList(); } //if (!rlst.Where(x => x.xcuda_PreviousItem != null).Select(x => x.xcuda_PreviousItem).Any()) return; for (int i = 0; i < rlst.Count(); i++) { rlst.ElementAt(i).LineNumber = i + 1; if (rlst.ElementAt(i).xcuda_PreviousItem != null) { rlst.ElementAt(i).xcuda_PreviousItem.StartTracking(); rlst.ElementAt(i).xcuda_PreviousItem.Current_item_number = (i + 1).ToString(); } } using (var ctx = new xcuda_PreviousItemService()) { foreach (var p in rlst.Select(x => x.xcuda_PreviousItem)) { if (p == null) { continue; } p.xcuda_Item = null; await ctx.Updatexcuda_PreviousItem(p).ConfigureAwait(false); } } using (var ctx = new DocumentItemDSContext()) { foreach (var i in rlst) { ctx.Database.ExecuteSqlCommand("update xcuda_Item" + $" set linenumber = {i.LineNumber}" + $" where Item_Id = {i.Item_Id}"); } } }
private static void AttachPackageInfo(List <AsycudaDocumentItemIM9> ares) { var str = ares.Select(z => z.AsycudaDocumentId.ToString()).Distinct().DefaultIfEmpty(string.Empty).Aggregate((n, c) => c + "," + n); using (var ctx = new DocumentItemDSContext()) { var ps = ctx.xcuda_Packages .Where(x => str.Contains(x.xcuda_Item.ASYCUDA_Id.ToString())) .Where(x => x.Number_of_packages != 0) .Select(x => new { ItemId = x.Item_Id, Packages = x.Number_of_packages }).ToList(); foreach (var itm in ps) { var a = ares.FirstOrDefault(x => x.ItemId == itm.ItemId.Value); if (a != null) { a.Number_of_packages = (int)itm.Packages; } } } }
private void UpdateEntity(xcuda_Item entity) { using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew, new TransactionOptions() { IsolationLevel = IsolationLevel.ReadUncommitted })) { using (var dbContext = new DocumentItemDSContext()) { try { dbContext.ApplyChanges(entity); dbContext.SaveChanges(); //entity.AcceptChanges(); scope.Complete(); } catch (DbUpdateConcurrencyException dce) { // Get failed entry foreach (var itm in dce.Entries) { itm.OriginalValues.SetValues(itm.GetDatabaseValues()); } } catch (OptimisticConcurrencyException oce) { var context = ((IObjectContextAdapter)dbContext).ObjectContext; foreach (var entry in oce.StateEntries) { context.Refresh(System.Data.Entity.Core.Objects.RefreshMode.StoreWins, entry.Entity); } } catch (DbUpdateException e) { // Debugger.Break(); SqlException s = e.InnerException.InnerException as SqlException; if (s != null && s.Number == 2627) { } else { Debugger.Break(); throw; } } catch (Exception updateEx) { System.Diagnostics.Debugger.Break(); //throw new FaultException(updateEx.Message); var fault = new ValidationFault { Result = false, Message = updateEx.Message, Description = updateEx.StackTrace }; throw new FaultException <ValidationFault>(fault); } } } }