public async Task Update_UpdateRecord_ValidateResult()
    {
        using (SqlYRepository repository = new SqlYRepository(_connectionString)) {
            var newY = new EntityY {
                Name  = "Update1",
                Price = 1
            };
            try {
                await repository.CreateAsync(newY);

                newY = await repository.ReadAsync(newY.Id, "user");

                newY.Name  = "Update2";
                newY.Price = 2;
                await repository.UpdateAsync(newY);

                var readX = await repository.ReadAsync(newY.Id, "user");

                Assert.AreEqual(newY.Name, readX.Name);
                Assert.AreEqual(newY.Id, readX.Id);
                Assert.AreEqual(newY.Price, readX.Price);
            } finally {
                await repository.DeleteAsync(newY.Id, "user");
            }
        }
    }
 public async Task GetList_ReadAllRecords_RecordsFound()
 {
     using (SqlYRepository repository = new SqlYRepository(_connectionString)) {
         var items = (await repository.GetListAsync()).ToList();
         Assert.IsTrue(items.Count > 0);
     }
 }
Пример #3
0
 // GET: Y
 public async Task <ActionResult> Index()
 {
     ViewBag.Message     = TempData["Message"];
     TempData["Message"] = string.Empty;
     using (var repository = new SqlYRepository()) {
         var items = (await repository.GetListAsync()).ToList();
         return(View(items));
     }
 }
Пример #4
0
 public async Task <ActionResult> Create(EntityY model)
 {
     try {
         using (var repository = new SqlYRepository()) {
             await repository.CreateAsync(model).ConfigureAwait(false);
         }
         TempData["Message"] = $"{model.Name} created.";
         return(RedirectToAction("Index"));
     } catch {
         return(View());
     }
 }
Пример #5
0
        // GET: Y/Delete/5
        public async Task <ActionResult> Delete(int id)
        {
            using (var repository = new SqlYRepository()) {
                try {
                    await repository.DeleteAsync(id, User.Identity.GetUserName()).ConfigureAwait(false);

                    TempData["Message"] = "Record deleted successfully.";
                } catch (Exception ex) {
                    TempData["Message"] = $"There was an error deleting record: {id}";
                }
            }
            return(RedirectToAction("Index"));
        }
Пример #6
0
        // GET: Y/Edit/5
        public async Task <ActionResult> Edit(int id)
        {
            using (var repository = new SqlYRepository()) {
                try {
                    var model = await repository.ReadAsync(id, User.Identity.GetUserName()).ConfigureAwait(false);

                    return(View(model));
                } catch (ConcurrencyException ex) {
                    TempData["Message"] = ex.Message;
                    return(RedirectToAction("Index"));
                } catch (Exception ex) {
                    TempData["Message"] = $"There was an error updating record: {id}";
                    return(RedirectToAction("Index"));
                }
            }
        }
    public async Task Update_UpdateRecordParallelPessimistic_ValidateResult()
    {
        var newY = new EntityY {
            Name  = "Update1",
            Price = 1
        };

        using (SqlYRepository repository1 = new SqlYRepository(_connectionString))
            using (SqlYRepository repository2 = new SqlYRepository(_connectionString)) {
                try {
                    await repository1.CreateAsync(newY);

                    //Read Item by 1-st user
                    newY = await repository1.ReadAsync(newY.Id, "user1");

                    //read should fail here
                    EntityY readY2 = null;
                    try {
                        readY2 = await repository2.ReadAsync(newY.Id, "user2");
                    } catch (ConcurrencyException ex) {
                        Assert.IsTrue(ex.Message.StartsWith("Lock already set"));
                    } catch (Exception ex) {
                        Assert.Fail();
                    }
                    //Read the same item by 2-nd user, should fail here


                    //Modify and save updated by first user
                    newY.Name     = "Update2";
                    newY.Price    = 2;
                    newY.LockedBy = "user1";
                    await repository1.UpdateAsync(newY);

                    //the result should be from the 1-st user update
                    var readY = await repository1.ReadAsync(newY.Id, "user1");

                    Assert.AreEqual(newY.Name, readY.Name);
                    Assert.AreEqual(newY.Id, readY.Id);
                    Assert.AreEqual(newY.Price, readY.Price);
                } finally {
                    await repository1.DeleteAsync(newY.Id, "user1");
                }
            }
    }
    public async Task CreateListRemove_Crud_Validate()
    {
        using (var repository = new SqlYRepository(_connectionString)) {
            var newY = new EntityY {
                Name  = "Test",
                Price = 1
            };
            await repository.CreateAsync(newY);

            Assert.IsTrue(newY.Id > 0);
            //read and set lock on this record
            var readX = await repository.ReadAsync(newY.Id, "user");

            Assert.AreEqual(newY.Name, readX.Name);
            Assert.AreEqual(newY.Id, readX.Id);
            Assert.AreEqual(newY.Price, readX.Price);
            //delete record with lock
            await repository.DeleteAsync(newY.Id, "user");
        }
    }
Пример #9
0
        public async Task <ActionResult> Edit(EntityY model)
        {
            try {
                using (var repository = new SqlYRepository()) {
                    try {
                        model.LockedBy = User.Identity.GetUserName();
                        await repository.UpdateAsync(model).ConfigureAwait(false);

                        TempData["Message"] = $"{model.Name} updated successfully.";
                    } catch (ConcurrencyException ex) {
                        TempData["Message"] = $"Record {model.Id} is locked by another user";
                    } catch (Exception ex) {
                        TempData["Message"] = $"There was an error updating record: {model.Id}";
                    }
                }
                return(RedirectToAction("Index"));
            } catch (Exception ex) {
                TempData["Message"] = $"Cannot update {model.Name}.";
                return(RedirectToAction("Index"));
            }
        }