예제 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="EdmModelBase"/> class.
        /// </summary>
        /// <param name="referencedModels">Models to which this model refers.</param>
        /// <param name="annotationsManager">Annotations manager for the model to use.</param>
        /// <remarks>Only either mainModel and referencedModels should have value.</remarks>
        protected EdmModelBase(IEnumerable<IEdmModel> referencedModels, IEdmDirectValueAnnotationsManager annotationsManager)
        {
            EdmUtil.CheckArgumentNull(referencedModels, "referencedModels");
            EdmUtil.CheckArgumentNull(annotationsManager, "annotationsManager");

            this.referencedEdmModels = new List<IEdmModel>(referencedModels);

            this.referencedEdmModels.Add(EdmCoreModel.Instance);

            if (CoreVocabularyModel.Instance != null)
            {
                this.referencedEdmModels.Add(CoreVocabularyModel.Instance);
            }

            // Make sure the core vocabulary model is initialized.
            if (!CoreVocabularyModel.IsInitializing && CapabilitiesVocabularyModel.Instance != null)
            {
                this.referencedEdmModels.Add(CapabilitiesVocabularyModel.Instance);
            }

            if (AlternateKeysVocabularyModel.Instance != null)
            {
                this.referencedEdmModels.Add(AlternateKeysVocabularyModel.Instance);
            }

            this.annotationsManager = annotationsManager;
        }
예제 #2
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="astModel">The raw CsdlModel.</param>
 /// <param name="annotationsManager">The IEdmDirectValueAnnotationsManager.</param>
 /// <param name="referencedModels">The IEdmModels to be referenced. if any element or namespce is not supposed to be include, you should have removed it before passing to this constructor.</param>
 public CsdlSemanticsModel(CsdlModel astModel, IEdmDirectValueAnnotationsManager annotationsManager, IEnumerable<IEdmModel> referencedModels)
     : base(referencedModels, annotationsManager)
 {
     this.astModel = astModel;
     this.SetEdmReferences(astModel.CurrentModelReferences);
     foreach (CsdlSchema schema in this.astModel.Schemata)
     {
         this.AddSchema(schema);
     }
 }
예제 #3
0
 /// <summary>Creates new empty metadata definition.</summary>
 /// <param name="containerName">Name of the container to report.</param>
 /// <param name="namespaceName">Namespace name.</param>
 public ConstructableMetadata(string containerName, string namespaceName)
 {
     this.directValueAnnotationsManager = new EdmDirectValueAnnotationsManager();
     this.entitySets = new Dictionary<string, IEdmEntitySet>();
     this.singletons = new Dictionary<string, IEdmSingleton>();
     this.entityTypes = new Dictionary<string, IEdmEntityType>();
     this.complexTypes = new Dictionary<string, IEdmComplexType>();
     this.operationImports = new Dictionary<string, List<IEdmOperationImport>>();
     this.operations = new Dictionary<string, List<IEdmOperation>>();
     this.derivedTypeMappings = new Dictionary<IEdmStructuredType, List<IEdmStructuredType>>();
     this.containerName = containerName;
     this.namespaceName = namespaceName;
 }
예제 #4
0
        /// <summary>
        /// Constroctur
        /// </summary>
        /// <param name="mainCsdlModel">The main raw CsdlModel.</param>
        /// <param name="annotationsManager">The IEdmDirectValueAnnotationsManager.</param>
        /// <param name="referencedCsdlModels">The referenced raw CsdlModels.</param>
        public CsdlSemanticsModel(CsdlModel mainCsdlModel, IEdmDirectValueAnnotationsManager annotationsManager, IEnumerable<CsdlModel> referencedCsdlModels)
            : base(Enumerable.Empty<IEdmModel>(), annotationsManager)
        {
            this.astModel = mainCsdlModel;
            this.SetEdmReferences(astModel.CurrentModelReferences);

            // 1. build semantics for referenced models
            foreach (var tmp in referencedCsdlModels)
            {
                this.AddReferencedModel(new CsdlSemanticsModel(tmp, this.DirectValueAnnotationsManager, this));
            }

            // 2. build semantics for current model
            foreach (var include in mainCsdlModel.CurrentModelReferences.SelectMany(s => s.Includes))
            {
                this.SetNamespaceAlias(include.Namespace, include.Alias);
            }

            foreach (CsdlSchema schema in this.astModel.Schemata)
            {
                this.AddSchema(schema);
            }
        }
 private static IEdmModel CreateFakeModel(IEdmDirectValueAnnotationsManager annotationsManager)
 {
     Mock<IEdmModel> model = new Mock<IEdmModel>();
     model.Setup(m => m.DirectValueAnnotationsManager).Returns(annotationsManager);
     return model.Object;
 }
예제 #6
0
 public TypeBuilder(string namespaceName, IEdmDirectValueAnnotationsManager annotationsManager)
 {
     NamespaceName = namespaceName;
     _annotationsManager = annotationsManager;
     _registeredTypes = new Dictionary<string, IEdmSchemaType>();
 }
예제 #7
0
		private EdmCoreModel()
		{
			this.primitiveTypeKinds = new Dictionary<string, EdmPrimitiveTypeKind>();
			this.primitiveTypesByKind = new Dictionary<EdmPrimitiveTypeKind, EdmCoreModel.EdmValidCoreModelPrimitiveType>();
			this.primitiveTypeByName = new Dictionary<string, EdmCoreModel.EdmValidCoreModelPrimitiveType>();
			this.annotationsManager = new EdmDirectValueAnnotationsManager();
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "Double", EdmPrimitiveTypeKind.Double);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType1 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "Single", EdmPrimitiveTypeKind.Single);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType2 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "Int64", EdmPrimitiveTypeKind.Int64);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType3 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "Int32", EdmPrimitiveTypeKind.Int32);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType4 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "Int16", EdmPrimitiveTypeKind.Int16);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType5 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "SByte", EdmPrimitiveTypeKind.SByte);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType6 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "Byte", EdmPrimitiveTypeKind.Byte);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType7 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "Boolean", EdmPrimitiveTypeKind.Boolean);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType8 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "Guid", EdmPrimitiveTypeKind.Guid);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType9 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "Time", EdmPrimitiveTypeKind.Time);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType10 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "DateTime", EdmPrimitiveTypeKind.DateTime);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType11 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "DateTimeOffset", EdmPrimitiveTypeKind.DateTimeOffset);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType12 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "Decimal", EdmPrimitiveTypeKind.Decimal);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType13 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "Binary", EdmPrimitiveTypeKind.Binary);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType14 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "String", EdmPrimitiveTypeKind.String);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType15 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "Stream", EdmPrimitiveTypeKind.Stream);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType16 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "Geography", EdmPrimitiveTypeKind.Geography);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType17 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "GeographyPoint", EdmPrimitiveTypeKind.GeographyPoint);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType18 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "GeographyLineString", EdmPrimitiveTypeKind.GeographyLineString);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType19 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "GeographyPolygon", EdmPrimitiveTypeKind.GeographyPolygon);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType20 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "GeographyCollection", EdmPrimitiveTypeKind.GeographyCollection);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType21 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "GeographyMultiPolygon", EdmPrimitiveTypeKind.GeographyMultiPolygon);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType22 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "GeographyMultiLineString", EdmPrimitiveTypeKind.GeographyMultiLineString);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType23 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "GeographyMultiPoint", EdmPrimitiveTypeKind.GeographyMultiPoint);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType24 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "Geometry", EdmPrimitiveTypeKind.Geometry);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType25 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "GeometryPoint", EdmPrimitiveTypeKind.GeometryPoint);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType26 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "GeometryLineString", EdmPrimitiveTypeKind.GeometryLineString);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType27 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "GeometryPolygon", EdmPrimitiveTypeKind.GeometryPolygon);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType28 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "GeometryCollection", EdmPrimitiveTypeKind.GeometryCollection);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType29 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "GeometryMultiPolygon", EdmPrimitiveTypeKind.GeometryMultiPolygon);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType30 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "GeometryMultiLineString", EdmPrimitiveTypeKind.GeometryMultiLineString);
			EdmCoreModel.EdmValidCoreModelPrimitiveType edmValidCoreModelPrimitiveType31 = new EdmCoreModel.EdmValidCoreModelPrimitiveType("Edm", "GeometryMultiPoint", EdmPrimitiveTypeKind.GeometryMultiPoint);
			EdmCoreModel.EdmValidCoreModelPrimitiveType[] edmValidCoreModelPrimitiveTypeArray = new EdmCoreModel.EdmValidCoreModelPrimitiveType[32];
			edmValidCoreModelPrimitiveTypeArray[0] = edmValidCoreModelPrimitiveType13;
			edmValidCoreModelPrimitiveTypeArray[1] = edmValidCoreModelPrimitiveType7;
			edmValidCoreModelPrimitiveTypeArray[2] = edmValidCoreModelPrimitiveType6;
			edmValidCoreModelPrimitiveTypeArray[3] = edmValidCoreModelPrimitiveType10;
			edmValidCoreModelPrimitiveTypeArray[4] = edmValidCoreModelPrimitiveType11;
			edmValidCoreModelPrimitiveTypeArray[5] = edmValidCoreModelPrimitiveType12;
			edmValidCoreModelPrimitiveTypeArray[6] = edmValidCoreModelPrimitiveType;
			edmValidCoreModelPrimitiveTypeArray[7] = edmValidCoreModelPrimitiveType8;
			edmValidCoreModelPrimitiveTypeArray[8] = edmValidCoreModelPrimitiveType4;
			edmValidCoreModelPrimitiveTypeArray[9] = edmValidCoreModelPrimitiveType3;
			edmValidCoreModelPrimitiveTypeArray[10] = edmValidCoreModelPrimitiveType2;
			edmValidCoreModelPrimitiveTypeArray[11] = edmValidCoreModelPrimitiveType5;
			edmValidCoreModelPrimitiveTypeArray[12] = edmValidCoreModelPrimitiveType1;
			edmValidCoreModelPrimitiveTypeArray[13] = edmValidCoreModelPrimitiveType15;
			edmValidCoreModelPrimitiveTypeArray[14] = edmValidCoreModelPrimitiveType14;
			edmValidCoreModelPrimitiveTypeArray[15] = edmValidCoreModelPrimitiveType9;
			edmValidCoreModelPrimitiveTypeArray[16] = edmValidCoreModelPrimitiveType16;
			edmValidCoreModelPrimitiveTypeArray[17] = edmValidCoreModelPrimitiveType17;
			edmValidCoreModelPrimitiveTypeArray[18] = edmValidCoreModelPrimitiveType18;
			edmValidCoreModelPrimitiveTypeArray[19] = edmValidCoreModelPrimitiveType19;
			edmValidCoreModelPrimitiveTypeArray[20] = edmValidCoreModelPrimitiveType20;
			edmValidCoreModelPrimitiveTypeArray[21] = edmValidCoreModelPrimitiveType21;
			edmValidCoreModelPrimitiveTypeArray[22] = edmValidCoreModelPrimitiveType22;
			edmValidCoreModelPrimitiveTypeArray[23] = edmValidCoreModelPrimitiveType23;
			edmValidCoreModelPrimitiveTypeArray[24] = edmValidCoreModelPrimitiveType24;
			edmValidCoreModelPrimitiveTypeArray[25] = edmValidCoreModelPrimitiveType25;
			edmValidCoreModelPrimitiveTypeArray[26] = edmValidCoreModelPrimitiveType26;
			edmValidCoreModelPrimitiveTypeArray[27] = edmValidCoreModelPrimitiveType27;
			edmValidCoreModelPrimitiveTypeArray[28] = edmValidCoreModelPrimitiveType28;
			edmValidCoreModelPrimitiveTypeArray[29] = edmValidCoreModelPrimitiveType29;
			edmValidCoreModelPrimitiveTypeArray[30] = edmValidCoreModelPrimitiveType30;
			edmValidCoreModelPrimitiveTypeArray[31] = edmValidCoreModelPrimitiveType31;
			this.primitiveTypes = edmValidCoreModelPrimitiveTypeArray;
			EdmCoreModel.EdmValidCoreModelPrimitiveType[] edmValidCoreModelPrimitiveTypeArray1 = this.primitiveTypes;
			for (int i = 0; i < (int)edmValidCoreModelPrimitiveTypeArray1.Length; i++)
			{
				EdmCoreModel.EdmValidCoreModelPrimitiveType primitiveKind = edmValidCoreModelPrimitiveTypeArray1[i];
				this.primitiveTypeKinds[primitiveKind.Name] = primitiveKind.PrimitiveKind;
				this.primitiveTypeKinds[string.Concat(primitiveKind.Namespace, (object)((char)46), primitiveKind.Name)] = primitiveKind.PrimitiveKind;
				this.primitiveTypesByKind[primitiveKind.PrimitiveKind] = primitiveKind;
				this.primitiveTypeByName[string.Concat(primitiveKind.Namespace, (object)((char)46), primitiveKind.Name)] = primitiveKind;
			}
		}
예제 #8
0
 public static void SetActionLinkBuilder(this IEdmDirectValueAnnotationsManager manager, IEdmElement element,
                                         ActionLinkBuilder value)
 {
     SetCoreAnnotation <ActionLinkBuilder>(manager, element, value);
 }
 public static void SetIsAlwaysBindable(this IEdmDirectValueAnnotationsManager manager,
                                        IEdmFunctionImport functionImport)
 {
     SetODataAnnotation(manager, functionImport, "IsAlwaysBindable", "true");
 }
 public static void SetDefaultContainer(this IEdmDirectValueAnnotationsManager manager,
                                        IEdmEntityContainer container)
 {
     SetODataAnnotation(manager, container, "IsDefaultEntityContainer", "true");
 }
 public static void SetIsAlwaysBindable(this IEdmDirectValueAnnotationsManager manager, IEdmOperation operation)
 {
     SetODataAnnotation(manager, operation, "IsAlwaysBindable", "true");
 }
예제 #12
0
        /// <summary>
        /// Constructor for creating a referenced model, is private and only called by the above constructor.
        /// </summary>
        /// <param name="referencedCsdlModel">The referenced raw CsdlModel.</param>
        /// <param name="annotationsManager">The IEdmDirectValueAnnotationsManager.</param>
        /// <param name="mainCsdlSemanticsModel">The CsdlSemanticsModel that will reference this new CsdlSemanticsModel. </param>
        private CsdlSemanticsModel(CsdlModel referencedCsdlModel, IEdmDirectValueAnnotationsManager annotationsManager, CsdlSemanticsModel mainCsdlSemanticsModel)
            : base(Enumerable.Empty<IEdmModel>(), annotationsManager)
        {
            this.mainEdmModel = mainCsdlSemanticsModel;
            Debug.Assert(referencedCsdlModel.ParentModelReferences.Any(), "referencedCsdlModel.ParentModelReferences.Any()");
            this.astModel = referencedCsdlModel;
            this.SetEdmReferences(referencedCsdlModel.CurrentModelReferences);

            foreach (var tmp in referencedCsdlModel.ParentModelReferences.SelectMany(s => s.Includes))
            {
                string includeNs = tmp.Namespace;
                if (!referencedCsdlModel.Schemata.Any(s => s.Namespace == includeNs))
                {
                    // edmx:include must be an existing namespace
                    // TODO: REF throw exception: should include a namespace that exists in referenced model.
                }
            }

            foreach (var tmp in referencedCsdlModel.CurrentModelReferences.SelectMany(s => s.Includes))
            {
                // in any referenced model, alias may point to a further referenced model, now make alias available:
                this.SetNamespaceAlias(tmp.Namespace, tmp.Alias);
            }

            foreach (var schema in referencedCsdlModel.Schemata)
            {
                string schemaNamespace = schema.Namespace;
                IEdmInclude edmInclude = referencedCsdlModel.ParentModelReferences.SelectMany(s => s.Includes).FirstOrDefault(s => s.Namespace == schemaNamespace);
                if (edmInclude != null)
                {
                    this.AddSchema(schema, false /*addAnnotations*/);
                }

                // TODO: REF add annotations
            }
        }
예제 #13
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EdmModelBase"/> class.
 /// </summary>
 /// <param name="referencedModels">Models to which this model refers.</param>
 /// <param name="annotationsManager">Annotations manager for the model to use.</param>
 /// <remarks>Only either mainModel and referencedModels should have value.</remarks>
 protected EdmModelBase(IEnumerable <IEdmModel> referencedModels, IEdmDirectValueAnnotationsManager annotationsManager)
     : this(referencedModels, annotationsManager, true /*includeDefaultVocabularies*/)
 {
 }
 /// <summary>
 /// Retrieves an annotation value for function import from the server model. Returns null if no annotation with the given name exists.
 /// </summary>
 /// <param name="serverManager">The annotation manager from the server model.</param>
 /// <param name="namespaceName">Namespace that the annotation belongs to.</param>
 /// <param name="localName">Local name of the annotation.</param>
 /// <returns>Returns the annotation value that corresponds to the provided name. Returns null if no annotation with the given name exists. </returns>
 internal object GetAnnotationValue(IEdmDirectValueAnnotationsManager serverManager, string namespaceName, string localName)
 {
     Debug.Assert(serverManager != null, "serverManager != null");
     return(serverManager.GetAnnotationValue(this.serverFunctionImport, namespaceName, localName));
 }
예제 #15
0
 /// <summary>
 /// Retrieves an annotation value for function import from the server model. Returns null if no annotation with the given name exists.
 /// </summary>
 /// <param name="serverManager">The annotation manager from the server model.</param>
 /// <param name="namespaceName">Namespace that the annotation belongs to.</param>
 /// <param name="localName">Local name of the annotation.</param>
 /// <returns>Returns the annotation value that corresponds to the provided name. Returns null if no annotation with the given name exists. </returns>
 internal object GetAnnotationValue(IEdmDirectValueAnnotationsManager serverManager, string namespaceName, string localName)
 {
     Debug.Assert(serverManager != null, "serverManager != null");
     return serverManager.GetAnnotationValue(this.serverFunctionImport, namespaceName, localName);
 }