public void CRUDCompositeKey() { this.TestClientContext.MergeOption = MergeOption.OverwriteChanges; // Post an entity Order order = new Order() { PersonId = 3, OrderId = 1, Description = "Person 3 order 1", Price = 1000, NormalOrderDetail = new OrderDetail(), ImmutableOrderDetail = new OrderDetail() }; this.TestClientContext.AddToOrders(order); this.TestClientContext.SaveChanges(); // Update an entity order.Description = "Order31"; this.TestClientContext.UpdateObject(order); this.TestClientContext.SaveChanges(); // Query an entity this.TestClientContext.Detach(order); order = this.TestClientContext.Orders .ByKey(new Dictionary<string, object>() { { "PersonId", 3 } , { "OrderId", 1 } }).GetValue(); Assert.Equal("Order31", order.Description); // Filter this entity var orders = this.TestClientContext.Orders .AddQueryOption("$filter", "PersonId eq 3 and OrderId eq 1").ToList(); Assert.Equal(1, orders.Count); // Delete an entity this.TestClientContext.DeleteObject(order); this.TestClientContext.SaveChanges(); // Filter this entity orders = this.TestClientContext.Orders .AddQueryOption("$filter", "PersonId eq 3 and OrderId eq 1").ToList(); Assert.Equal(0, orders.Count); }
public void CURDComputedImmutableProperty() { this.TestClientContext.MergeOption = MergeOption.OverwriteChanges; // Post an entity Order employee = new Order() { PersonId = 1, OrderId = 11, Price = 300, ComputedProperty = "ShouldBeIgnored", ImmutableProperty = "ShouldNotBeIgnored", NormalOrderDetail = new OrderDetail() { NormalProperty = "ShouldNotBeIgnored", ComputedProperty = "ShouldBeIgnored", ImmutableProperty = "ShouldNotBeIgnored" }, ComputedOrderDetail = new OrderDetail() { NormalProperty = "IgnoredAsParentIgnored", ComputedProperty = "IgnoredAsParentIgnored", ImmutableProperty = "IgnoredAsParentIgnored" }, ImmutableOrderDetail = new OrderDetail() { NormalProperty = "ShouldNotBeIgnored", ComputedProperty = "ShouldBeIgnored", ImmutableProperty = "ShouldNotBeIgnored" }, }; this.TestClientContext.AddToOrders(employee); this.TestClientContext.SaveChanges(); long personId = employee.PersonId; long orderId = employee.OrderId; // Query the new added entity this.TestClientContext.Detach(employee); employee = this.TestClientContext.Orders.Where(e => e.PersonId == personId && e.OrderId == orderId).First(); // computed property should not have new value but Immutable property should have new value Assert.Equal(300, employee.Price); Assert.NotEqual("ShouldBeIgnored", employee.ComputedProperty); Assert.Equal("ShouldNotBeIgnored", employee.ImmutableProperty); Assert.Equal("ShouldNotBeIgnored", employee.NormalOrderDetail.NormalProperty); Assert.NotEqual("ShouldBeIgnored", employee.NormalOrderDetail.ComputedProperty); Assert.Equal("ShouldNotBeIgnored", employee.NormalOrderDetail.ImmutableProperty); Assert.NotEqual("IgnoredAsParentIgnored", employee.ComputedOrderDetail.NormalProperty); Assert.NotEqual("IgnoredAsParentIgnored", employee.ComputedOrderDetail.ComputedProperty); Assert.NotEqual("IgnoredAsParentIgnored", employee.ComputedOrderDetail.ImmutableProperty); Assert.Equal("ShouldNotBeIgnored", employee.ImmutableOrderDetail.NormalProperty); Assert.NotEqual("ShouldBeIgnored", employee.ImmutableOrderDetail.ComputedProperty); Assert.Equal("ShouldNotBeIgnored", employee.ImmutableOrderDetail.ImmutableProperty); // Update an entity employee.Price = 400; employee.ComputedProperty = "ShouldBeIgnored2"; employee.ImmutableProperty = "ShouldBeIgnored2"; employee.NormalOrderDetail = new OrderDetail() { NormalProperty = "ShouldNotBeIgnored2", ComputedProperty = "ShouldBeIgnored2", ImmutableProperty = "ShouldBeIgnored2" }; employee.ComputedOrderDetail = new OrderDetail() { NormalProperty = "IgnoredAsParentIgnored2", ComputedProperty = "IgnoredAsParentIgnored2", ImmutableProperty = "IgnoredAsParentIgnored2" }; employee.ImmutableOrderDetail = new OrderDetail() { NormalProperty = "ShouldBeIgnored2", ComputedProperty = "ShouldBeIgnored2", ImmutableProperty = "ShouldBeIgnored2" }; this.TestClientContext.UpdateObject(employee); this.TestClientContext.SaveChanges(); // Query the updated entity this.TestClientContext.Detach(employee); employee = this.TestClientContext.Orders.Where(e => e.PersonId == personId && e.OrderId == orderId).First(); // both computed property and immutable property should not have new value Assert.Equal(400, employee.Price); Assert.NotEqual("ShouldBeIgnored2", employee.ComputedProperty); // Immutable property has value set during insert. Assert.NotEqual("ShouldBeIgnored2", employee.ImmutableProperty); Assert.Equal("ShouldNotBeIgnored", employee.ImmutableProperty); Assert.Equal("ShouldNotBeIgnored2", employee.NormalOrderDetail.NormalProperty); Assert.NotEqual("ShouldBeIgnored2", employee.NormalOrderDetail.ComputedProperty); Assert.NotEqual("ShouldBeIgnored2", employee.NormalOrderDetail.ImmutableProperty); Assert.NotEqual("IgnoredAsParentIgnored2", employee.ComputedOrderDetail.NormalProperty); Assert.NotEqual("IgnoredAsParentIgnored2", employee.ComputedOrderDetail.ComputedProperty); Assert.NotEqual("IgnoredAsParentIgnored2", employee.ComputedOrderDetail.ImmutableProperty); Assert.NotEqual("ShouldBeIgnored2", employee.ImmutableOrderDetail.NormalProperty); Assert.NotEqual("ShouldBeIgnored2", employee.ImmutableOrderDetail.ComputedProperty); Assert.NotEqual("ShouldBeIgnored2", employee.ImmutableOrderDetail.ImmutableProperty); // Delete an entity this.TestClientContext.DeleteObject(employee); this.TestClientContext.SaveChanges(); }