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."); }
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."); }