示例#1
0
        public void PostFullProperties()
        {
            int           expectedPropertyCount = 0;
            ODataResource entry = null;

            this.TestClientContext.Configurations.RequestPipeline.OnEntryEnding((arg) =>
            {
                if (arg.Entry.TypeName.EndsWith("CustomerPlus") ||
                    arg.Entry.TypeName.EndsWith("OrderPlus"))
                {
                    entry = arg.Entry;
                    Assert.Equal(expectedPropertyCount, 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 = 10;
            this.TestClientContext.SaveChanges();

            //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         = 11111111;
            order.OrderDatePlus       = new DateTimeOffset(new DateTime(2011, 5, 29, 14, 21, 12));
            order.OrderShelfLifesPlus = new ObservableCollection <TimeSpan>();

            expectedPropertyCount = 6;
            this.TestClientContext.SaveChanges();
        }
示例#2
0
        private void PostPropertiesOfEntityParameterToAction(EntityParameterSendOption option)
        {
            TestClientContext.EntityParameterSendOption = option;

            var customer = TestClientContext.CustomersPlus.First();

            OrderPlus order = new OrderPlus();

            var collection = new DataServiceCollection <OrderPlus>(TestClientContext, "OrdersPlus", null, null);

            collection.Add(order);

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

            order.OrderIDPlus         = orderId;
            order.OrderShelfLifesPlus = new ObservableCollection <TimeSpan>();

            OrderPlus orderCreated = customer.PlaceOrderPlus(order).GetValue();

            Assert.Equal(orderId, orderCreated.OrderIDPlus);
        }
示例#3
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);
        }