Ejemplo n.º 1
0
        public void PostFullPropertiesInBatch()
        {
            var batchFlags = new SaveChangesOptions[] { SaveChangesOptions.BatchWithSingleChangeset, SaveChangesOptions.BatchWithIndependentOperations };

            foreach (var batchFlag in batchFlags)
            {
                List <ODataResource> entries = new List <ODataResource>();
                this.TestClientContext.Configurations.RequestPipeline.OnEntryEnding((arg) =>
                {
                    entries.Add(arg.Entry);
                });

                DataServiceCollection <CustomerPlus> people =
                    new DataServiceCollection <CustomerPlus>(this.TestClientContext, "People", null, null);
                var person = new CustomerPlus();
                people.Add(person);

                person.FirstNamePlus = "Nelson";
                person.LastNamePlus  = "Black";
                person.NumbersPlus   = new ObservableCollection <string> {
                };
                person.EmailsPlus    = new ObservableCollection <string> {
                    "*****@*****.**"
                };
                person.PersonIDPlus = 10001;
                person.CityPlus     = "London";
                person.TimeBetweenLastTwoOrdersPlus = new TimeSpan(1);
                person.HomeAddressPlus = new HomeAddressPlus()
                {
                    CityPlus       = "Redmond",
                    PostalCodePlus = "98052",
                    StreetPlus     = "1 Microsoft Way"
                };

                DataServiceCollection <AccountPlus> accounts =
                    new DataServiceCollection <AccountPlus>(this.TestClientContext);
                var account = new AccountPlus();
                accounts.Add(account);
                account.AccountIDPlus     = 110;
                account.CountryRegionPlus = "CN";

                DataServiceCollection <ProductPlus> products = new DataServiceCollection <ProductPlus>(this.TestClientContext);
                ProductPlus product = new ProductPlus();
                products.Add(product);
                product.NamePlus            = "Apple";
                product.ProductIDPlus       = 1000000;
                product.QuantityInStockPlus = 20;
                product.QuantityPerUnitPlus = "Pound";
                product.UnitPricePlus       = 0.35f;
                product.DiscontinuedPlus    = false;
                product.CoverColorsPlus     = new ObservableCollection <ColorPlus>();

                //Post entity into an entity set
                this.TestClientContext.SaveChanges(batchFlag);

                Assert.Equal(10, entries.Where(e => e.TypeName.Contains("CustomerPlus")).First().Properties.Count());
                Assert.Equal(2, entries.Where(e => e.TypeName.Contains("AccountPlus")).First().Properties.Count());
                Assert.Equal(9, entries.Where(e => e.TypeName.Contains("ProductPlus")).First().Properties.Count());
            }
        }
Ejemplo n.º 2
0
 private void Clear()
 {
     DishName.Clear();
     ProductPlus.Clear();
     ProductCounter.Clear();
     ListOfProducts.Clear();
     TextOfrepice.Clear();
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Function clear some user elements.
 /// </summary>
 private void Clear()
 {
     Cursor.Current = Cursors.Arrow;
     DishName.Clear();
     ProductPlus.Clear();
     ProductCounter.Clear();
     ListOfProducts.Clear();
     TextOfrepice.Clear();
     Cursor.Current = Cursors.Arrow;
 }
        public async Task DelayQueryOnFunctionImport()
        {
            this.testClientContext             = this.CreateWrappedContext <InMemoryEntitiesPlus>().Context;
            this.testClientContext.MergeOption = MergeOption.OverwriteChanges;

            //Post an Product
            var product = ProductPlus.CreateProductPlus(10001, "10001", "2", 2.0f, 2, true);

            product.SkinColorPlus  = ColorPlus.RedPlus;
            product.UserAccessPlus = AccessLevelPlus.ExecutePlus | AccessLevelPlus.ReadPlus;
            this.testClientContext.AddToProductsPlus(product);
            await this.testClientContext.SaveChangesAsync();

            //Composable FunctionImport, return collection of entitySet
            var getAllProductsFunction = this.testClientContext.GetAllProductsPlus();
            var products = (await getAllProductsFunction.ExecuteAsync()).ToList();

            Assert.True(products.Any());
            Assert.True(getAllProductsFunction.RequestUri.OriginalString.EndsWith("/GetAllProducts()"));
            double unitPrice = products.First().UnitPricePlus;

            //GetEnumerator
            var discountAction = getAllProductsFunction.DiscountPlus(50);

            foreach (var p in await discountAction.ExecuteAsync())
            {
                Assert.Equal(unitPrice * 50 / 100, p.UnitPricePlus);
                break;
            }
            Assert.True(discountAction.RequestUri.OriginalString.EndsWith("/GetAllProducts()/Microsoft.Test.OData.Services.ODataWCFService.Discount"));

            //Filter after Bound FunctionImport
            var filterAllProducts = getAllProductsFunction.Where(p => p.SkinColorPlus == ColorPlus.RedPlus) as DataServiceQuery <ProductPlus>;

            foreach (var p in await filterAllProducts.ExecuteAsync())
            {
                Assert.Equal(ColorPlus.RedPlus, p.SkinColorPlus);
            }
            Assert.True(filterAllProducts.RequestUri.OriginalString.EndsWith("/GetAllProducts()?$filter=SkinColor eq Microsoft.Test.OData.Services.ODataWCFService.Color'Red'"));

            //FunctionImport, return collection of primitivetype
            var getBossEmailsFunction = this.testClientContext.GetBossEmailsPlus(0, 10);
            var emails = await getBossEmailsFunction.ExecuteAsync();

            Assert.True(getBossEmailsFunction.RequestUri.OriginalString.EndsWith("/GetBossEmails(start=0,count=10)"));

            //FunctionImport, return Collection of primitivetype with enum parameter
            //Fail now
            var productsNameQuery = this.testClientContext.GetProductsByAccessLevelPlus(AccessLevelPlus.ReadPlus | AccessLevelPlus.ExecutePlus);
            var productsName      = await productsNameQuery.ExecuteAsync();

            Assert.True(Uri.UnescapeDataString(productsNameQuery.RequestUri.OriginalString).EndsWith("/GetProductsByAccessLevel(accessLevel=Microsoft.Test.OData.Services.ODataWCFService.AccessLevel'Read,Execute')"));
            Assert.True(productsName.Any());
        }
Ejemplo n.º 5
0
        public void DelayQueryOnFunctionImport()
        {
            TestClientContext.MergeOption = MergeOption.OverwriteChanges;

            //Post an Product
            var product = ProductPlus.CreateProductPlus(10001, "10001", "2", 2.0f, 2, true);

            product.SkinColorPlus  = ColorPlus.RedPlus;
            product.UserAccessPlus = AccessLevelPlus.ExecutePlus | AccessLevelPlus.ReadPlus;
            TestClientContext.AddToProductsPlus(product);
            TestClientContext.SaveChanges();

            //FunctionImport
            var getAllProductsFunction = TestClientContext.GetAllProductsPlus();
            var products = getAllProductsFunction.ToList();

            Assert.IsTrue(products.Count() > 0);
            Assert.IsTrue(getAllProductsFunction.RequestUri.OriginalString.EndsWith("/GetAllProducts()"));
            double unitPrice = products.First().UnitPricePlus;

            //GetEnumerator
            var discountAction = getAllProductsFunction.DiscountPlus(50);

            foreach (var p in discountAction)
            {
                Assert.AreEqual(unitPrice * 50 / 100, p.UnitPricePlus);
                break;
            }
            Assert.IsTrue(discountAction.RequestUri.OriginalString.EndsWith("/GetAllProducts()/Microsoft.Test.OData.Services.ODataWCFService.Discount"));

            //Filter after FunctionImport
            var filterAllProducts = getAllProductsFunction.Where(p => p.SkinColorPlus == ColorPlus.RedPlus) as DataServiceQuery <ProductPlus>;

            foreach (var p in filterAllProducts)
            {
                Assert.AreEqual(ColorPlus.RedPlus, p.SkinColorPlus);
            }
            Assert.IsTrue(filterAllProducts.RequestUri.OriginalString.EndsWith("/GetAllProducts()?$filter=SkinColor eq Microsoft.Test.OData.Services.ODataWCFService.Color'Red'"));

            //FunctionImport, return collection of primitivetype
            var getBossEmailsFunction = TestClientContext.GetBossEmailsPlus(0, 10);
            var emails = getBossEmailsFunction.Execute();

            Assert.IsTrue(getBossEmailsFunction.RequestUri.OriginalString.EndsWith("/GetBossEmails(start=0,count=10)"));

            //FunctionImport, return Collection of primitivetype with enum parameter
            var productsNameQuery = TestClientContext.GetProductsByAccessLevelPlus(AccessLevelPlus.ReadPlus | AccessLevelPlus.ExecutePlus);
            var productsName      = productsNameQuery.Execute();

            Assert.IsTrue(Uri.UnescapeDataString(productsNameQuery.RequestUri.OriginalString).EndsWith("/GetProductsByAccessLevel(accessLevel=Microsoft.Test.OData.Services.ODataWCFService.AccessLevel'Read,Execute')"));
            Assert.IsTrue(productsName.Count() > 0);
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Function Add Products to the Recipe
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void ProductToRecept_Click(object sender, EventArgs e)
 {
     Cursor.Current = Cursors.WaitCursor;
     try
     {
         if (!product.MyProducts(ProductPlus.Text, int.Parse(ProductCounter.Text), true))
         {
             ListOfProducts.Text = string.Concat(ListOfProducts.Text, $"{ProductPlus.Text} - {ProductCounter.Text} {product.dim};\r\n");
             ProductCounter.Clear();
             ProductPlus.Clear();
         }
         else
         {
             PlusProductFunctionLabel.Text = "Добавьте продукт в закупку с количеством = 0.";
         }
     }
     catch (FormatException)
     {
         PlusProductFunctionLabel.Text = "Ошибка в формате количества.";
     }
     Cursor.Current = Cursors.Arrow;
 }
Ejemplo n.º 7
0
        public void PostPartialProperties()
        {
            this.TestClientContext.MergeOption = MergeOption.OverwriteChanges;

            int           expectedPropertyCount = 0;
            ODataResource address     = null;
            ODataResource accountInfo = null;

            this.TestClientContext.Configurations.RequestPipeline.OnEntryEnding((arg) =>
            {
                if (arg.Entry.TypeName.EndsWith("HomeAddressPlus"))
                {
                    address = arg.Entry;
                }

                if (arg.Entry.TypeName.EndsWith("AccountInfoPlus"))
                {
                    accountInfo = arg.Entry;
                }

                if (arg.Entry.TypeName.EndsWith("CustomerPlus"))
                {
                    Assert.Equal(expectedPropertyCount, arg.Entry.Properties.Count());
                }
            });

            //Entity of Derived type
            //Entity has a complex property of derived type
            DataServiceCollection <CustomerPlus> people =
                new DataServiceCollection <CustomerPlus>(this.TestClientContext, "People", null, null);
            var person = new CustomerPlus();

            people.Add(person);

            person.FirstNamePlus = "Nelson";
            person.LastNamePlus  = "Black";
            person.NumbersPlus   = new ObservableCollection <string> {
            };
            person.EmailsPlus    = new ObservableCollection <string> {
                "*****@*****.**"
            };
            person.PersonIDPlus = 10001;
            person.CityPlus     = "London";
            person.TimeBetweenLastTwoOrdersPlus = new TimeSpan(1);
            person.HomeAddressPlus = new HomeAddressPlus()
            {
                CityPlus       = "Redmond",
                PostalCodePlus = "98052",
                StreetPlus     = "1 Microsoft Way"
            };

            //Post entity into an entity set
            expectedPropertyCount = 7;
            this.TestClientContext.SaveChanges(SaveChangesOptions.PostOnlySetProperties);

            //Validate that entire complex type was sent to server side.
            Assert.Equal(4, address.Properties.Count());

            //Post Navigation property to an entitySet
            var       people1 = new DataServiceCollection <CustomerPlus>(this.TestClientContext.CustomersPlus.Where(p => p.PersonIDPlus == 10001));
            OrderPlus order   = new OrderPlus();

            people1[0].OrdersPlus.Add(order);
            order.OrderIDPlus         = 10001;
            order.OrderDatePlus       = new DateTimeOffset(new DateTime(2011, 5, 29, 14, 21, 12));
            order.OrderShelfLifesPlus = new ObservableCollection <TimeSpan>();

            expectedPropertyCount = 3;
            this.TestClientContext.SaveChanges(SaveChangesOptions.PostOnlySetProperties);

            //Validate
            var customer = this.TestClientContext.CustomersPlus.Expand(c => c.OrdersPlus).Where(p => p.PersonIDPlus == 10001).FirstOrDefault();

            Assert.NotNull(customer);
            Assert.Equal("London", ((CustomerPlus)customer).CityPlus);
            Assert.Equal(0, customer.NumbersPlus.Count);
            Assert.Null(((HomeAddressPlus)customer.HomeAddressPlus).FamilyNamePlus);
            Assert.Null(customer.MiddleNamePlus);
            var order1 = customer.OrdersPlus.Where(o => o.OrderIDPlus == 10001).Single();

            Assert.Null(order1.ShelfLifePlus);

            //Post Entity with open complex type and with contained Navigation
            DataServiceCollection <AccountPlus> accounts =
                new DataServiceCollection <AccountPlus>(this.TestClientContext);
            var account = new AccountPlus();

            accounts.Add(account);
            account.AccountIDPlus     = 110;
            account.CountryRegionPlus = "CN";
            account.AccountInfoPlus   = new AccountInfoPlus()
            {
                FirstNamePlus = "New",
                LastNamePlus  = "Base",
                IsActivePlus  = true,
            };
            var expectedMiddleName = account.AccountInfoPlus.MiddleNamePlus;

            expectedPropertyCount = 3;
            this.TestClientContext.SaveChanges(SaveChangesOptions.PostOnlySetProperties);
            //Validate entire open complex type was sent to server side.
            Assert.Equal(4, accountInfo.Properties.Count());

            //Post Contained Navigation property
            PaymentInstrumentPlus pi = new PaymentInstrumentPlus();

            account.MyPaymentInstrumentsPlus.Add(pi);
            pi.PaymentInstrumentIDPlus = 1003;
            pi.CreatedDatePlus         = DateTimeOffset.Now;
            pi.FriendlyNamePlus        = "FriendlyName";

            expectedPropertyCount = 3;
            this.TestClientContext.SaveChanges(SaveChangesOptions.PostOnlySetProperties);

            //Post Contained Single Navigation property
            //var gcs = new DataServiceCollection<GiftCardPlus>(this.TestClientContext, "Accounts(110)/MyGiftCard", null, null);
            GiftCardPlus gc = new GiftCardPlus();

            account.MyGiftCardPlus = gc;
            gc.GiftCardIDPlus      = 10001;
            gc.GiftCardNOPlus      = "10001";
            gc.AmountPlus          = 2000;
            gc.ExperationDatePlus  = DateTimeOffset.Now;

            expectedPropertyCount = 4;
            this.TestClientContext.SaveChanges(SaveChangesOptions.PostOnlySetProperties);

            var account1 = this.TestClientContext.AccountsPlus.Expand(a => a.MyPaymentInstrumentsPlus).Expand(a => a.MyGiftCardPlus).Where(a => a.AccountIDPlus == 110).Single();

            Assert.Equal("CN", account1.CountryRegionPlus);
            Assert.Equal(expectedMiddleName, account1.AccountInfoPlus.MiddleNamePlus);
            Assert.Equal("Base", account1.AccountInfoPlus.LastNamePlus);
            Assert.True(account1.AccountInfoPlus.IsActivePlus);
            var pi1 = account1.MyPaymentInstrumentsPlus.Where(p => p.PaymentInstrumentIDPlus == 1003).SingleOrDefault();

            Assert.NotNull(pi1);
            Assert.Equal("FriendlyName", pi1.FriendlyNamePlus);
            Assert.Null(account1.MyGiftCardPlus.OwnerNamePlus);
            Assert.Equal(2000, account1.MyGiftCardPlus.AmountPlus);

            //Post Entity with Enum property and collection of Enum property
            DataServiceCollection <ProductPlus> products = new DataServiceCollection <ProductPlus>(this.TestClientContext);
            ProductPlus product = new ProductPlus();

            products.Add(product);
            product.NamePlus            = "Apple";
            product.ProductIDPlus       = 1000000;
            product.QuantityInStockPlus = 20;
            product.QuantityPerUnitPlus = "Pound";
            product.UnitPricePlus       = 0.35f;
            product.DiscontinuedPlus    = false;
            product.CoverColorsPlus     = new ObservableCollection <ColorPlus>();
            product.SkinColorPlus       = null;

            expectedPropertyCount = 8;
            this.TestClientContext.SaveChanges(SaveChangesOptions.PostOnlySetProperties);

            var product2 = this.TestClientContext.ProductsPlus.Where(p => p.ProductIDPlus == 1000000).FirstOrDefault();

            Assert.NotNull(product2);
            Assert.Equal("Apple", product2.NamePlus);

            //Post Navigation property under derived singleton
            DataServiceCollection <CompanyPlus> publicCompany = new DataServiceCollection <CompanyPlus>(this.TestClientContext.PublicCompanyPlus);
            AssetPlus asset = new AssetPlus();

            (publicCompany[0] as PublicCompanyPlus).AssetsPlus.Add(asset);
            asset.AssetIDPlus = 4;
            asset.NumberPlus  = 50;

            expectedPropertyCount = 2;
            this.TestClientContext.SaveChanges(SaveChangesOptions.PostOnlySetProperties);

            var pc     = this.TestClientContext.PublicCompanyPlus.Expand(p => (p as PublicCompanyPlus).AssetsPlus).GetValue() as PublicCompanyPlus;
            var asset2 = pc.AssetsPlus.Where(a => a.AssetIDPlus == 4).First();

            Assert.Equal(50, asset2.NumberPlus);
            Assert.Null(asset2.NamePlus);

            //Post Navigation property of Singleton
            DataServiceCollection <CompanyPlus> company = new DataServiceCollection <CompanyPlus>(this.TestClientContext.CompanyPlus);
            DepartmentPlus department = new DepartmentPlus();

            company[0].DepartmentsPlus.Add(department);
            department.DepartmentIDPlus = 10001;
            department.NamePlus         = "D1";

            expectedPropertyCount = 2;
            this.TestClientContext.SaveChanges(SaveChangesOptions.PostOnlySetProperties);

            var company2    = this.TestClientContext.CompanyPlus.Expand(p => p.DepartmentsPlus).GetValue();
            var department2 = company2.DepartmentsPlus.Where(d => d.DepartmentIDPlus == 10001).First();

            Assert.Equal("D1", department.NamePlus);
            Assert.Null(department.DepartmentNOPlus);
        }