示例#1
0
        public void EdmxRoundTripTests_EdmxReferences()
        {
            string    mainEdmx;
            string    referencedEdmx1;
            string    referencedEdmx2;
            IEdmModel mainModel;

            EdmxModelBuilder.GetReferencedModelEdmx(out mainModel, out mainEdmx, out referencedEdmx1, out referencedEdmx2);
            IEnumerable <EdmError> errors;
            bool valid = mainModel.Validate(out errors);

            Assert.IsTrue(valid);

            // verify reading edmx:Reference
            List <IEdmReference> references = mainModel.GetEdmReferences().ToList();

            Assert.AreEqual(2, references.Count);
            Assert.AreEqual("VPCT", references[0].Includes.First().Alias);
            Assert.AreEqual("NS.Ref1", references[0].Includes.First().Namespace);

            // verify Uri in EdmReference
            string       uriString    = "http://addedUrl/addedEdm.xml";
            EdmReference newReference = new EdmReference(new Uri(uriString));

            Assert.AreEqual(uriString, EdmValueWriter.UriAsXml(newReference.Uri));

            // verify writing edmx:Reference
            // add a new <edmx:reference>
            newReference.AddInclude(new EdmInclude("adhoc_Alias", "adhoc_Namespace"));
            List <IEdmReference> newReferences = new List <IEdmReference>();

            newReferences.AddRange(references);
            newReferences.Add(newReference);
            mainModel.SetEdmReferences(newReferences);
            string actualEdmx = GetEdmx(mainModel, CsdlTarget.OData);

            // add new Include to verify: Namespace=""adhoc_Namespace"" Alias=""adhoc_Alias""
            mainEdmx = mainEdmx.Replace("  <edmx:DataServices>",
                                        @"  <edmx:Reference Uri=""http://addedUrl/addedEdm.xml"">
    <edmx:Include Namespace=""adhoc_Namespace"" Alias=""adhoc_Alias"" />
  </edmx:Reference>
  <edmx:DataServices>");

            // after deserialization & serialization, the alias'ed 'CT.Customer' becomes qualified name 'NS1.Customer',
            // so make some adjustments for verification:
            actualEdmx = actualEdmx.Replace("EntityType=\"NS1.Customer\"", "EntityType=\"CT.Customer\"");
            actualEdmx = actualEdmx.Replace("EntityType=\"NS.Ref1.VipCustomer\"", "EntityType=\"VPCT.VipCustomer\"");
            actualEdmx = actualEdmx.Replace("EntityType=\"NS.Ref2.VipCard\"", "EntityType=\"VPCD.VipCard\"");
            valid      = XElement.DeepEquals(XElement.Parse(mainEdmx), XElement.Parse(actualEdmx));
            Assert.IsTrue(valid, "Invalid actual edmx.");
        }
示例#2
0
        public void EdmxRoundTripTestsUsingAliasInReferencedEdmx()
        {
            string    mainEdmx;
            string    referencedEdmx1;
            string    referencedEdmx2;
            IEdmModel mainModel;

            EdmxModelBuilder.GetReferencedModelEdmx(out mainModel, out mainEdmx, out referencedEdmx1, out referencedEdmx2);
            IEnumerable <EdmError> errors;
            bool valid = mainModel.Validate(out errors);

            Assert.IsTrue(valid);
            string actualEdmx = GetEdmx(mainModel, CsdlTarget.OData);

            // after deserialization & serialization, the alias'ed 'CT.Customer' becomes qualified name 'NS1.Customer',
            // so make some adjustments for verification:
            actualEdmx = actualEdmx.Replace("EntityType=\"NS1.Customer\"", "EntityType=\"CT.Customer\"");
            actualEdmx = actualEdmx.Replace("EntityType=\"NS.Ref1.VipCustomer\"", "EntityType=\"VPCT.VipCustomer\"");
            actualEdmx = actualEdmx.Replace("EntityType=\"NS.Ref2.VipCard\"", "EntityType=\"VPCD.VipCard\"");
            valid      = XElement.DeepEquals(XElement.Parse(mainEdmx), XElement.Parse(actualEdmx));
            Assert.IsTrue(valid, "Invalid actual edmx.");
        }