/// <summary> /// Creates and adds a navigation property to this type and adds its navigation partner to the navigation target type. /// </summary> /// <param name="propertyInfo">Information to create the navigation property.</param> /// <param name="partnerInfo">Information to create the partner navigation property.</param> /// <returns>Created navigation property.</returns> public EdmNavigationProperty AddBidirectionalNavigation(EdmNavigationPropertyInfo propertyInfo, EdmNavigationPropertyInfo partnerInfo) { EdmUtil.CheckArgumentNull(propertyInfo, "propertyInfo"); EdmUtil.CheckArgumentNull(propertyInfo.Target, "propertyInfo.Target"); EdmEntityType targetType = propertyInfo.Target as EdmEntityType; if (targetType == null) { throw new ArgumentException("propertyInfo.Target", Strings.Constructable_TargetMustBeStock(typeof(EdmEntityType).FullName)); } EdmNavigationProperty property = EdmNavigationProperty.CreateNavigationPropertyWithPartner(propertyInfo, this.FixUpDefaultPartnerInfo(propertyInfo, partnerInfo)); this.AddProperty(property); targetType.AddProperty(property.Partner); return property; }
public void ProcessRequest(HttpContext context) { if (!HttpContext.Current.Request.IsAuthenticated) { HttpContext.Current.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = HttpContext.Current.Request.FilePath }, "OAuth2Bearer"); return; } MSRAHttpResponseMessage message = new MSRAHttpResponseMessage(this.ContextBase.Response); message.StatusCode = 200; message.SetHeader(ODataConstants.ContentTypeHeader, "application/json"); // create the writer, indent for readability ODataMessageWriterSettings messageWriterSettings = new ODataMessageWriterSettings() { Indent = true, CheckCharacters = false, BaseUri = context.Request.Url }; messageWriterSettings.SetContentType(ODataFormat.Json); messageWriterSettings.SetMetadataDocumentUri(new Uri("http://localhost:31435/odata/MSRAQuery/$metadata")); if (string.IsNullOrEmpty(QueryId)) { AzureTestDBEntities db = new AzureTestDBEntities(); var queries = db.MsrRecurringQueries.ToList().Take(1); ODataWorkspace workSpace = new ODataWorkspace(); var collections = new List<ODataResourceCollectionInfo>(); foreach (MsrRecurringQuery recurringQuery in queries) { ODataResourceCollectionInfo collectionInfo = new ODataResourceCollectionInfo() { Name = "MsrRecurringQueries", Url = new Uri(context.Request.Url+"data/" + recurringQuery.RecurringQueryID.ToString(), UriKind.Absolute) }; collectionInfo.SetAnnotation<AtomResourceCollectionMetadata>(new AtomResourceCollectionMetadata() { Title = new AtomTextConstruct() { Text = "MsrRecurringQueries"//recurringQuery.RecurringQueryName }, }); collections.Add(collectionInfo); } workSpace.Collections = collections.AsEnumerable<ODataResourceCollectionInfo>(); using (ODataMessageWriter messageWriter = new ODataMessageWriter(message, messageWriterSettings)) { messageWriter.WriteServiceDocumentAsync(workSpace); } } else { EdmModel mainModel =(EdmModel) QueryMetadataHttpHandler.BuildODataModel(); using (ODataMessageWriter messageWriter = new ODataMessageWriter(message, messageWriterSettings, mainModel)) { var msrRecurringQueryResultType = new EdmEntityType("mainNS", "MsrRecurringQuery", null); IEdmPrimitiveType edmPrimitiveType1 = new MSRAEdmPrimitiveType("Int32", "Edm", EdmPrimitiveTypeKind.Int32, EdmSchemaElementKind.TypeDefinition, EdmTypeKind.Primitive); IEdmPrimitiveType edmPrimitiveType2 = new MSRAEdmPrimitiveType("String", "Edm", EdmPrimitiveTypeKind.String, EdmSchemaElementKind.TypeDefinition, EdmTypeKind.Primitive); IEdmPrimitiveType edmPrimitiveType3 = new MSRAEdmPrimitiveType("String", "Edm", EdmPrimitiveTypeKind.String, EdmSchemaElementKind.TypeDefinition, EdmTypeKind.Primitive); IEdmPrimitiveType edmPrimitiveType4 = new MSRAEdmPrimitiveType("String", "Edm", EdmPrimitiveTypeKind.String, EdmSchemaElementKind.TypeDefinition, EdmTypeKind.Primitive); IEdmPrimitiveType edmPrimitiveType5 = new MSRAEdmPrimitiveType("String", "Edm", EdmPrimitiveTypeKind.String, EdmSchemaElementKind.TypeDefinition, EdmTypeKind.Primitive); IEdmPrimitiveType edmPrimitiveType6 = new MSRAEdmPrimitiveType("Decimal", "Edm", EdmPrimitiveTypeKind.Decimal, EdmSchemaElementKind.TypeDefinition, EdmTypeKind.Primitive); msrRecurringQueryResultType.AddKeys(new EdmStructuralProperty(msrRecurringQueryResultType, "RowId", new EdmPrimitiveTypeReference(edmPrimitiveType1, false))); msrRecurringQueryResultType.AddProperty(new EdmStructuralProperty(msrRecurringQueryResultType, "RowId", new EdmPrimitiveTypeReference(edmPrimitiveType1, false))); msrRecurringQueryResultType.AddProperty(new EdmStructuralProperty(msrRecurringQueryResultType, "Pricing_Level", new EdmPrimitiveTypeReference(edmPrimitiveType2, false))); msrRecurringQueryResultType.AddProperty(new EdmStructuralProperty(msrRecurringQueryResultType, "Business_Summary", new EdmPrimitiveTypeReference(edmPrimitiveType3, false))); msrRecurringQueryResultType.AddProperty(new EdmStructuralProperty(msrRecurringQueryResultType, "Future_Flag", new EdmPrimitiveTypeReference(edmPrimitiveType4, false))); msrRecurringQueryResultType.AddProperty(new EdmStructuralProperty(msrRecurringQueryResultType, "Fiscal_Month", new EdmPrimitiveTypeReference(edmPrimitiveType5, false))); msrRecurringQueryResultType.AddProperty(new EdmStructuralProperty(msrRecurringQueryResultType, "MS_Sales_Amount_Const", new EdmPrimitiveTypeReference(edmPrimitiveType6, false))); ODataWriter feedWriter = messageWriter.CreateODataFeedWriter( mainModel.EntityContainers().Select(c => c.EntitySets().First()).First(), msrRecurringQueryResultType); ODataFeed feed = new ODataFeed() { Id = "MsrRecurringQueries", }; feedWriter.WriteStart(feed); AzureTestDBEntities db = new AzureTestDBEntities(); var queries = db.T_annooli_231161891 ; foreach (var recurringQuery in queries) { ODataEntry entry = this.GetODataEntry(recurringQuery); feedWriter.WriteStart(entry); feedWriter.WriteEnd(); } feedWriter.WriteEnd(); } } }