コード例 #1
0
        public async Task <UpdateResult> UpdateAsync(string number, OrderRecord orderIn)
        {
            if (!OrderExists(number))
            {
                return(new UpdateResult()
                {
                    NotFound = true, ErrorMessage = $"Product with code {orderIn.Number} doesn't exist."
                });
            }

            var orderTransaction = await this.dbContext.Database.BeginTransactionAsync();

            try
            {
                Order orderToDelete = await this.dbContext.Orders.FindAsync(orderIn.Number);

                this.dbContext.Remove(orderToDelete);

                await this.dbContext.SaveChangesAsync();

                await this.dbContext.AddAsync(await orderIn.GetEntity(dbContext));

                await this.dbContext.SaveChangesAsync();

                await orderTransaction.CommitAsync();
            }
            catch (DbUpdateConcurrencyException dce)
            {
                await orderTransaction.RollbackAsync();

                return(new UpdateResult()
                {
                    Success = false, ErrorMessage = dce.Message
                });
            }
            catch (Exception ex)
            {
                await orderTransaction.RollbackAsync();
            }

            return(new UpdateResult()
            {
                Success = true
            });
        }
コード例 #2
0
        public async Task <CreateResult <OrderRecord> > CreateAsync(OrderRecord order)
        {
            if (OrderExists(order.Number))
            {
                return(new CreateResult <OrderRecord>()
                {
                    AlreadyExists = true, ErrorMessage = $"Order with number {order.Number} already exists."
                });
            }

            Order newOrder = await order.GetEntity(this.dbContext);

            try
            {
                await this.dbContext.SaveChangesAsync();
            }
            catch (DbUpdateException dbu)
            {
                if (OrderExists(order.Number))
                {
                    return(new CreateResult <OrderRecord>()
                    {
                        AlreadyExists = true
                    });
                }
                else
                {
                    return(new CreateResult <OrderRecord>()
                    {
                        ErrorMessage = dbu.Message
                    });
                }
            }

            return(new CreateResult <OrderRecord>()
            {
                Success = true, NewRecord = newOrder.GetRecord(this.dbContext)
            });
        }