private async Task AddOrUpdate(InvoiceModel invoice) { if (string.IsNullOrEmpty(invoice.FindId)) { invoice.CreateId(); _entity = _dbcontext.Invoices.Add(new InvoiceData { Invoice = invoice }); var lastNumber = await _dbcontext.LastNumber.FindAsync(1); if (int.TryParse(invoice.Number, out int number) && number > lastNumber.LastNumber) { _dbcontext.LastNumber.Update(new LastNumberData { Id = 1, LastNumber = number }); } } else { invoice.IsUpdate(invoice.Created); var dataObject = await _dbcontext.Invoices .AsNoTracking() .SingleOrDefaultAsync(x => x.Invoice.FindId == invoice.FindId); dataObject.Invoice = invoice; _entity = _dbcontext.Invoices.Update(dataObject); } await _dbcontext.SaveChangesAsync(); _entity.State = EntityState.Detached; }