public async Task TestSaveChanges(string actionName) { var serviceProvider = CreateServiceProvider(); var em = serviceProvider.GetService <BreezeEntityManager>(); em.SetSessionProvider(serviceProvider.GetService <ISessionProvider>()); var order = em.CreateEntity <Order>(); order.Name = "test"; order.Active = true; order.Status = OrderStatus.Delivered; order.TotalPrice = 10.3m; order.Address.City = "City"; order.Address.Street = "Street"; var compositeOrder = new CompositeOrder(1999, 1, "A") { TotalPrice = 10.8m }; em.SetAdded(compositeOrder); var jObject = await PostAsync <JObject>(actionName, em.GetSaveBundle()); var entities = jObject.Property("Entities").Value.Value <JArray>(); Assert.Equal(2, entities.Count); var keyMappings = jObject.Property("KeyMappings").Value.Value <JArray>().ToObject <List <KeyMapping> >(); var keyMapping = Assert.Single(keyMappings); Assert.NotNull(keyMapping); order = em.Get <Order>(keyMapping.RealValue); Assert.NotNull(order); em.Clear(); em.SetDeleted(order); em.SetDeleted(compositeOrder); jObject = await PostAsync <JObject>(actionName, em.GetSaveBundle()); var deletedKeys = jObject.Property("DeletedKeys").Value.Value <JArray>().ToObject <List <EntityKey> >(); Assert.Equal(2, deletedKeys.Count); }
protected virtual void FillDatabase(ISession session) { var products = new Product[10]; for (var i = 0; i < 10; i++) { var product = new Product { Name = $"Product{i}", Category = i % 2 == 0 ? "paper" : null }; products[i] = product; session.Save(product); } for (var i = 0; i < 10; i++) { var person = new Person { Name = $"Person{i}" }; var passport = new Passport { Country = $"Country{i}", ExpirationDate = DateTime.UtcNow.AddYears(10), Number = 123456 + i, Owner = person }; person.Passport = passport; var card = new IdentityCard { Code = $"Code{i}", Owner = person }; person.IdentityCard = card; session.Save(person); session.Save(card); } for (var i = 0; i < 10; i++) { var order = new Order { Name = $"Order{i}", Active = true, Status = OrderStatus.Delivered }; for (var j = 0; j < 10; j++) { order.Products.Add(new OrderProduct { Order = order, Product = products[(i + j) % 10], TotalPrice = 10, Quantity = 1 }); order.FkProducts.Add(new OrderProductFk { Order = order, Product = products[(i + j) % 10], TotalPrice = 10, Quantity = 1 }); } session.Save(order); var compositeOrder = new CompositeOrder { Status = $"Status{i}", Number = i, Year = 2000, TotalPrice = 15.8m }; for (var j = 0; j < 10; j++) { compositeOrder.CompositeOrderRows.Add(new CompositeOrderRow { CompositeOrder = compositeOrder, Product = products[(i + j) % 10], Price = (int)(i * j), Quantity = i + j }); } session.Save(compositeOrder); var parentDog = new Dog { Name = $"Dog{i}", BirthDate = DateTime.UtcNow.AddYears(-10), BodyWeight = 14.8, Pregnant = true, }; session.Save(parentDog); var parentCat = new Cat { Name = $"Cat{i}", BirthDate = DateTime.UtcNow.AddYears(-10), BodyWeight = 19.8, Pregnant = false, }; session.Save(parentCat); for (var j = 0; j < 10; j++) { var hasParent = j % 2 == 0; var dog = new Dog { Name = $"Dog{j}", BirthDate = DateTime.UtcNow.AddYears(-(i + j)), BodyWeight = 14.8, Parent = hasParent ? parentDog : null }; session.Save(dog); if (hasParent) { parentDog.Children.Add(dog); } var cat = new Cat { Name = $"Cat{j}", BirthDate = DateTime.UtcNow.AddYears(-(i + j)), BodyWeight = 14.8, Parent = hasParent ? parentCat : null }; session.Save(cat); if (hasParent) { parentCat.Children.Add(cat); } } } }