Exemple #1
0
        public void InsertAndUpdatePropertyValueUsingLinq()
        {
            TimeSpan timespan  = new TimeSpan((new Random()).Next());
            var      queryable = TestClientContext.Orders.Where(c => c.ShelfLife == timespan) as ODataClient.DataServiceQuery <Order>;

            Assert.IsTrue(queryable.RequestUri.OriginalString.EndsWith("/Orders?$filter=ShelfLife eq duration'" + XmlConvert.ToString(timespan) + "'", StringComparison.Ordinal));

            var result1 = queryable.ToList();

            Assert.IsTrue(result1.Count == 0);

            int orderID = (new Random()).Next();

            // create an entity
            Order order = new Order()
            {
                OrderID         = orderID,
                OrderDate       = new DateTimeOffset(new DateTime(2011, 3, 4, 16, 3, 57)),
                ShelfLife       = timespan,
                OrderShelfLifes = new ObservableCollection <TimeSpan>()
                {
                    timespan
                }
            };

            TestClientContext.AddToOrders(order);
            TestClientContext.SaveChanges();

            // query and verify
            var result2 = queryable.ToList();

            Assert.AreEqual(1, result2.Count);
            Assert.AreEqual(orderID, result2[0].OrderID);

            // update the Duration properties
            timespan              = new TimeSpan((new Random()).Next());
            order.ShelfLife       = timespan;
            order.OrderShelfLifes = new ObservableCollection <TimeSpan>()
            {
                timespan
            };
            TestClientContext.UpdateObject(order);
            TestClientContext.SaveChanges(ODataClient.SaveChangesOptions.ReplaceOnUpdate);

            // query Duration property
            var queryable2 = TestClientContext.Orders.Where(c => c.OrderID == orderID).Select(c => c.ShelfLife).FirstOrDefault();

            Assert.IsTrue(queryable2 != null);
            Assert.AreEqual(timespan, queryable2);

            // query collection of Duration property
            var queryable3 = (from c in TestClientContext.Orders
                              where c.OrderID == orderID
                              select c.OrderShelfLifes).FirstOrDefault();

            Assert.IsTrue(queryable3.Count == 1);
            Assert.AreEqual(timespan, queryable3[0]);

            // delete entity and validate
            TestClientContext.DeleteObject(order);
            TestClientContext.SaveChanges(ODataClient.SaveChangesOptions.ReplaceOnUpdate);
            var queryable4 = TestClientContext.Execute <Order>(new Uri("Orders()?$filter=ShelfLife eq duration'" + XmlConvert.ToString(timespan) + "'", UriKind.Relative));

            Assert.IsTrue(queryable4.Count() == 0);
        }