예제 #1
0
        public void SingletonQueryUpdateNavigationSingleEntityPropertyClientTest()
        {
            TestClientContext             = this.CreateWrappedContext <InMemoryEntities>().Context;
            TestClientContext.MergeOption = Microsoft.OData.Client.MergeOption.OverwriteChanges;

            Company company        = null;
            var     queryCompany   = TestClientContext.Company.Expand("CoreDepartment");
            var     queryCompanyAr = queryCompany.BeginGetValue(null, null).EnqueueWait(this);

            company = queryCompany.EndGetValue(queryCompanyAr);
            Assert.True(company.CoreDepartment != null);

            //Single Entity
            company.CoreDepartment = null;
            var ar15 = TestClientContext.BeginLoadProperty(company, "CoreDepartment", null, null).EnqueueWait(this);

            TestClientContext.EndLoadProperty(ar15);
            Assert.True(company.CoreDepartment != null);

            Random     rand = new Random();
            int        tmpCoreDepartmentID = rand.Next();
            Department coreDepartment      = new Department()
            {
                DepartmentID = tmpCoreDepartmentID,
                Name         = "ID" + tmpCoreDepartmentID
            };

            TestClientContext.AddToDepartments(coreDepartment);
            TestClientContext.AddLink(company, "Departments", coreDepartment);
            var ar1 = TestClientContext.BeginSaveChanges(null, null).EnqueueWait(this);

            TestClientContext.EndSaveChanges(ar1);

            //Update Navigation Property - Single Entity
            TestClientContext.SetLink(company, "CoreDepartment", coreDepartment);
            var ar3 = TestClientContext.BeginSaveChanges(null, null).EnqueueWait(this);

            TestClientContext.EndSaveChanges(ar3);

            //Projection with Navigation properties - Select
            queryCompany = TestClientContext.Company.Select(c => new Company {
                CompanyID = c.CompanyID, CoreDepartment = c.CoreDepartment
            }) as DataServiceQuerySingle <Company>;
            queryCompanyAr = queryCompany.BeginGetValue(null, null).EnqueueWait(this);
            company        = queryCompany.EndGetValue(queryCompanyAr);
            Assert.True(company.CoreDepartment.DepartmentID == tmpCoreDepartmentID);
            this.EnqueueTestComplete();
        }
예제 #2
0
        public void SingletonQueryUpdateNavigationCollectionPropertyClientTest()
        {
            TestClientContext             = this.CreateWrappedContext <InMemoryEntities>().Context;
            TestClientContext.MergeOption = Microsoft.OData.Client.MergeOption.OverwriteChanges;

            var queryCompany   = TestClientContext.Company as DataServiceQuerySingle <Company>;
            var queryCompanyAr = queryCompany.BeginGetValue(null, null).EnqueueWait(this);
            var company        = queryCompany.EndGetValue(queryCompanyAr);

            //Load Navigation Property
            var loadDeparments = TestClientContext.BeginLoadProperty(company, "Departments", null, null).EnqueueWait(this);

            TestClientContext.EndLoadProperty(loadDeparments);
            Assert.True(company.Departments.Count > 0);

            //Add Navigation Property - Collection
            Random     rand            = new Random();
            int        tmpDepartmentID = rand.Next();
            Department department      = new Department()
            {
                DepartmentID = tmpDepartmentID,
                Name         = "ID" + tmpDepartmentID
            };

            TestClientContext.AddToDepartments(department);
            TestClientContext.AddLink(company, "Departments", department);
            var addDepartmentsLink = TestClientContext.BeginSaveChanges(null, null).EnqueueWait(this);

            TestClientContext.EndSaveChanges(addDepartmentsLink);

            //Projection with Navigation properties - Select
            var selectCompany = TestClientContext.Company.Select(c => new Company {
                CompanyID = c.CompanyID, Departments = c.Departments
            }) as DataServiceQuerySingle <Company>;
            var selectCompanyAr  = selectCompany.BeginGetValue(null, null).EnqueueWait(this);
            var projectedCompany = selectCompany.EndGetValue(selectCompanyAr);

            Assert.True(projectedCompany.Departments.Any(c => c.DepartmentID == tmpDepartmentID));

            //Update EntitySet's Navigation Property - Singleton
            TestClientContext.SetLink(department, "Company", company);
            var ar4 = TestClientContext.BeginSaveChanges(null, null).EnqueueWait(this);

            TestClientContext.EndSaveChanges(ar4);

            //Query(Expand) EntitySet's Navigation Property - Singleton
            var queryDepartment   = TestClientContext.Departments.Expand(d => d.Company).Where(d => d.DepartmentID == tmpDepartmentID) as DataServiceQuery <Department>;
            var queryDepartmentAr = queryDepartment.BeginExecute(null, null).EnqueueWait(this);

            department = queryDepartment.EndExecute(queryDepartmentAr).SingleOrDefault();
            Assert.True(department.Company.CompanyID == company.CompanyID);

            //Delete Navigation Property - EntitySet
            TestClientContext.DeleteLink(company, "Departments", department);
            var deleteLinkAr = TestClientContext.BeginSaveChanges(null, null).EnqueueWait(this);

            TestClientContext.EndSaveChanges(deleteLinkAr);

            //Expand Navigation Property - EntitySet
            queryCompany   = TestClientContext.Company.Expand("Departments");
            queryCompanyAr = queryCompany.BeginGetValue(null, null).EnqueueWait(this);
            company        = queryCompany.EndGetValue(queryCompanyAr);
            Assert.True(!company.Departments.Any(c => c.DepartmentID == tmpDepartmentID));

            this.EnqueueTestComplete();
        }
        public void SingletonQueryUpdateNavigationCollectionPropertyClientTest()
        {
            TestClientContext = this.CreateWrappedContext<InMemoryEntities>().Context;
            TestClientContext.MergeOption = Microsoft.OData.Client.MergeOption.OverwriteChanges;

            var queryCompany = TestClientContext.Company as DataServiceQuerySingle<Company>;
            var queryCompanyAr = queryCompany.BeginGetValue(null, null).EnqueueWait(this);
            var company = queryCompany.EndGetValue(queryCompanyAr);

            //Load Navigation Property
            var loadDeparments = TestClientContext.BeginLoadProperty(company, "Departments", null, null).EnqueueWait(this);
            TestClientContext.EndLoadProperty(loadDeparments);
            Assert.IsTrue(company.Departments.Count > 0);

            //Add Navigation Property - Collection
            Random rand = new Random();
            int tmpDepartmentID = rand.Next();
            Department department = new Department()
            {
                DepartmentID = tmpDepartmentID,
                Name = "ID" + tmpDepartmentID
            };
            TestClientContext.AddToDepartments(department);
            TestClientContext.AddLink(company, "Departments", department);
            var addDepartmentsLink = TestClientContext.BeginSaveChanges(null, null).EnqueueWait(this);
            TestClientContext.EndSaveChanges(addDepartmentsLink);

            //Projection with Navigation properties - Select
            var selectCompany = TestClientContext.Company.Select(c => new Company { CompanyID = c.CompanyID, Departments = c.Departments }) as DataServiceQuerySingle<Company>;
            var selectCompanyAr = selectCompany.BeginGetValue(null, null).EnqueueWait(this);
            var projectedCompany = selectCompany.EndGetValue(selectCompanyAr);
            Assert.IsTrue(projectedCompany.Departments.Any(c => c.DepartmentID == tmpDepartmentID));

            //Update EntitySet's Navigation Property - Singleton 
            TestClientContext.SetLink(department, "Company", company);
            var ar4 = TestClientContext.BeginSaveChanges(null, null).EnqueueWait(this);
            TestClientContext.EndSaveChanges(ar4);

            //Query(Expand) EntitySet's Navigation Property - Singleton
            var queryDepartment = TestClientContext.Departments.Expand(d => d.Company).Where(d => d.DepartmentID == tmpDepartmentID) as DataServiceQuery<Department>;
            var queryDepartmentAr = queryDepartment.BeginExecute(null, null).EnqueueWait(this);
            department = queryDepartment.EndExecute(queryDepartmentAr).SingleOrDefault();
            Assert.IsTrue(department.Company.CompanyID == company.CompanyID);

            //Delete Navigation Property - EntitySet
            TestClientContext.DeleteLink(company, "Departments", department);
            var deleteLinkAr = TestClientContext.BeginSaveChanges(null, null).EnqueueWait(this);
            TestClientContext.EndSaveChanges(deleteLinkAr);

            //Expand Navigation Property - EntitySet
            queryCompany = TestClientContext.Company.Expand("Departments");
            queryCompanyAr = queryCompany.BeginGetValue(null, null).EnqueueWait(this);
            company = queryCompany.EndGetValue(queryCompanyAr);
            Assert.IsTrue(!company.Departments.Any(c => c.DepartmentID == tmpDepartmentID));

            this.EnqueueTestComplete();
        }
        public void SingletonQueryUpdateNavigationSingleEntityPropertyClientTest()
        {
            TestClientContext = this.CreateWrappedContext<InMemoryEntities>().Context;
            TestClientContext.MergeOption = Microsoft.OData.Client.MergeOption.OverwriteChanges;

            Company company = null;
            var queryCompany = TestClientContext.Company.Expand("CoreDepartment");
            var queryCompanyAr = queryCompany.BeginGetValue(null, null).EnqueueWait(this);
            company = queryCompany.EndGetValue(queryCompanyAr);
            Assert.IsTrue(company.CoreDepartment != null);

            //Single Entity
            company.CoreDepartment = null;
            var ar15 = TestClientContext.BeginLoadProperty(company, "CoreDepartment", null, null).EnqueueWait(this);
            TestClientContext.EndLoadProperty(ar15);
            Assert.IsTrue(company.CoreDepartment != null);

            Random rand = new Random();
            int tmpCoreDepartmentID = rand.Next();
            Department coreDepartment = new Department()
            {
                DepartmentID = tmpCoreDepartmentID,
                Name = "ID" + tmpCoreDepartmentID
            };

            TestClientContext.AddToDepartments(coreDepartment);
            TestClientContext.AddLink(company, "Departments", coreDepartment);
            var ar1 = TestClientContext.BeginSaveChanges(null, null).EnqueueWait(this);
            TestClientContext.EndSaveChanges(ar1);

            //Update Navigation Property - Single Entity
            TestClientContext.SetLink(company, "CoreDepartment", coreDepartment);
            var ar3 = TestClientContext.BeginSaveChanges(null, null).EnqueueWait(this);
            TestClientContext.EndSaveChanges(ar3);

            //Projection with Navigation properties - Select
            queryCompany = TestClientContext.Company.Select(c => new Company { CompanyID = c.CompanyID, CoreDepartment = c.CoreDepartment }) as DataServiceQuerySingle<Company>;
            queryCompanyAr = queryCompany.BeginGetValue(null, null).EnqueueWait(this);
            company = queryCompany.EndGetValue(queryCompanyAr);
            Assert.IsTrue(company.CoreDepartment.DepartmentID == tmpCoreDepartmentID);
            this.EnqueueTestComplete();
        }