/// <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; }
/// <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); } }
/// <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; }
/// <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; }
public TypeBuilder(string namespaceName, IEdmDirectValueAnnotationsManager annotationsManager) { NamespaceName = namespaceName; _annotationsManager = annotationsManager; _registeredTypes = new Dictionary<string, IEdmSchemaType>(); }
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; } }
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"); }
/// <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 } }
/// <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)); }
/// <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); }