Example #1
0
        public async Task SaveDeletedEntity()
        {
            var entityManager = await TestFns.NewEm(_serviceName);

            // Create a new customer
            var product = new Product {
                ID = Guid.NewGuid()
            };

            entityManager.AddEntity(product);
            product.ProductName = "Test3A " + DateTime.Now.ToString();
            Assert.IsTrue(product.EntityAspect.EntityState == EntityState.Added, "State of new entity should be Added");

            try
            {
                var saveResult = await entityManager.SaveChanges();

                var savedEntity = saveResult.Entities[0];
                Assert.IsTrue(savedEntity is Product && savedEntity == product, "After save, added entity should still exist");
                Assert.IsTrue(product.EntityAspect.EntityState == EntityState.Unchanged, "State of saved entity should be Unchanged");

                // Delete customer
                product.EntityAspect.Delete();
                Assert.IsTrue(product.EntityAspect.EntityState == EntityState.Deleted,
                              "After delete, entity state should be deleted, not " + product.EntityAspect.EntityState.ToString());
                saveResult = await entityManager.SaveChanges();

                savedEntity = saveResult.Entities[0];
                Assert.IsTrue(savedEntity.EntityAspect.EntityState == EntityState.Detached,
                              "After save of deleted entity, entity state should be detached, not " + savedEntity.EntityAspect.EntityState.ToString());
            }
            catch (Exception e)
            {
                var message = string.Format("Save of deleted customer {0} should have succeeded;  Received {1}: {2}",
                                            product.ProductName, e.GetType().Name, e.Message);
                Assert.Fail(message);
            }
        }