public void EnsureNoDuplicateFoundForFunctionShouldReturnFalse()
        {
            EdmModel otherModel = new EdmModel();
            var entityType = new EdmEntityType("n.s", "GetStuff2");
            otherModel.AddElement(entityType);

            var edmFunction = new EdmFunction("n.s", "GetStuff", new EdmEntityTypeReference(entityType, false), false /*isBound*/, null /*entitySetPath*/, false /*isComposable*/);
            EdmModel model = new EdmModel();
            model.AddElement(edmFunction);
            model.AddReferencedModel(otherModel);

            model.OperationOrNameExistsInReferencedModel(edmFunction, edmFunction.FullName()).Should().BeFalse();
        }
        public void EnsureDuplicateTermAndFunctionReturnTrue()
        {
            EdmModel model = new EdmModel();
            var edmFunction = new EdmFunction("n.s", "GetStuff", EdmCoreModel.Instance.GetString(true), false /*isBound*/, null /*entitySetPath*/, false /*isComposable*/);
            model.AddElement(edmFunction);

            EdmModel otherModel = new EdmModel();
            var edmTerm = new EdmTerm("n.s", "GetStuff", EdmPrimitiveTypeKind.Int32);
            otherModel.AddElement(edmTerm);
            model.AddReferencedModel(otherModel);

            model.OperationOrNameExistsInReferencedModel(edmFunction, edmFunction.FullName()).Should().BeTrue();
        }
        public void EnsureDuplicateContainerFunctionReturnTrue()
        {
            EdmModel model = new EdmModel();
            var edmFunction = new EdmFunction("n.s", "GetStuff", EdmCoreModel.Instance.GetString(true), false /*isBound*/, null /*entitySetPath*/, false /*isComposable*/);
            model.AddElement(edmFunction);

            EdmModel otherModel = new EdmModel();
            EdmEntityContainer container = new EdmEntityContainer("n.s", "GetStuff");
            otherModel.AddElement(container);
            model.AddReferencedModel(otherModel);

            model.OperationOrNameExistsInReferencedModel(edmFunction, edmFunction.FullName()).Should().BeTrue();
        }
Example #4
0
        public static void Register(HttpConfiguration config)
        {
            var model2 = EdmxReader.Parse(XmlReader.Create("http://localhost:9091/odata/$metadata"));

            var model = new EdmModel();
            model.AddReferencedModel(model2);

            var reference = new EdmReference("http://localhost:9091/odata/$metadata");
            reference.AddInclude(new EdmInclude("Model2", "SampleService2.Models"));
            model.SetEdmReferences(new List<IEdmReference> { reference });

            var container = new EdmEntityContainer("NS1", "Default");
            var order = model2.FindDeclaredType("SampleService2.Models.Order") as IEdmEntityType;
            model2.SetAnnotationValue<ClrTypeAnnotation>(order, new ClrTypeAnnotation(typeof(Order)));
            container.AddEntitySet("Orders", order);
            model.AddElement(container);

            var product = new EdmEntityType("NS1", "Product");
            product.AddKeys(product.AddStructuralProperty("Id", EdmPrimitiveTypeKind.Int32));
            product.AddStructuralProperty("Name", EdmPrimitiveTypeKind.String);
            model.AddElement(product);

            config.MapODataServiceRoute("odata", "odata", model);
        }
        public void FindAllDerivedTypesWordsAcrossModels()
        {
            EdmModel model = new EdmModel();
            EdmModel referencedModel = new EdmModel();

            var A = new EdmEntityType("Referenced", "A");
            var AProp = A.AddStructuralProperty("ID", EdmCoreModel.Instance.GetString(false));
            A.AddKeys(new[] { AProp });

            var B = new EdmEntityType("Referenced", "B", A);
            var C = new EdmEntityType("Referenced", "C", B);

            var D = new EdmEntityType("Referenced", "D", C);

            referencedModel.AddElements(new[] { A, B, C });
            model.AddReferencedModel(referencedModel);
            model.AddElement(D);

            IEnumerable<IEdmStructuredType> derivedTypes = model.FindAllDerivedTypes(A);
            Assert.AreEqual(3, derivedTypes.Count(), "Correct number of derived types");
            Assert.IsTrue(derivedTypes.Contains(B), "Contains B");
            Assert.IsTrue(derivedTypes.Contains(C), "Contains C");
            Assert.IsTrue(derivedTypes.Contains(D), "Contains D");
        }