internal DynamicMetadataProvider(ProviderSpecificSchema informationSchema, InformationSchemaSettings informationSchemaSettings) { InformationSchema = informationSchema; _informationSchemaSettings = informationSchemaSettings; _schemaCache = SchemaCacheFactory.Create(informationSchema, _informationSchemaSettings); }
static async Task Main(String[] args) { //PerformanceCacheTest.RunTest(100); new PLNull(new PLNull_DbFixtureInitDb()).ApplyFilterGroupBy(0).GetAwaiter().GetResult(); //new ProcedureTest().ScalarFunction_get().GetAwaiter().GetResult(); //new PLNull_ManyColumns(new PLNull_ManyColumnsFixtureInitDb()).Filter(1).GetAwaiter().GetResult(); InformationSchemaSettings informationSchemaSettings = GetSettings(); ProviderSpecificSchema providerSchema = CreateSchemaSqlServer(true); var factory = new EmitDynamicTypeDefinitionManagerFactory(); EdmModel dynamicEdmModel; using (var metadataProvider = providerSchema.CreateMetadataProvider(informationSchemaSettings)) { DynamicTypeDefinitionManager typeDefinitionManager = factory.Create(metadataProvider); var dataAdapter = new DynamicDataAdapter(typeDefinitionManager); dynamicEdmModel = dataAdapter.BuildEdmModel(metadataProvider); } String csdlSchema = TestHelper.GetCsdlSchema(dynamicEdmModel); var parser = new OeParser(new Uri("http://dummy"), dynamicEdmModel); var stream = new MemoryStream(); await parser.ExecuteGetAsync(new Uri("http://dummy/Orders?$expand=Customer,Items&$orderby=Id"), OeRequestHeaders.JsonDefault, stream, CancellationToken.None); stream.Position = 0; String result = new StreamReader(stream).ReadToEnd(); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app) { String basePath = Configuration.GetValue <String>("OdataToEntity:BasePath"); String provider = Configuration.GetValue <String>("OdataToEntity:Provider"); String connectionString = Configuration.GetValue <String>("OdataToEntity:ConnectionString"); bool useRelationalNulls = Configuration.GetValue <bool>("OdataToEntity:UseRelationalNulls"); String?informationSchemaMappingFileName = Configuration.GetValue <String>("OdataToEntity:InformationSchemaMappingFileName"); String?filter = Configuration.GetValue <String>("OdataToEntity:Filter"); String?defaultSchema = Configuration.GetSection("OdataToEntity:DefaultSchema").Get <String>(); String[]? includedSchemas = Configuration.GetSection("OdataToEntity:IncludedSchemas").Get <String[]>(); String[]? excludedSchemas = Configuration.GetSection("OdataToEntity:ExcludedSchemas").Get <String[]>(); if (!String.IsNullOrEmpty(basePath) && basePath[0] != '/') { basePath = "/" + basePath; } var informationSchemaSettings = new InformationSchemaSettings(); if (!String.IsNullOrEmpty(defaultSchema)) { informationSchemaSettings.DefaultSchema = defaultSchema; } if (includedSchemas != null) { informationSchemaSettings.IncludedSchemas = new HashSet <String>(includedSchemas); } if (excludedSchemas != null) { informationSchemaSettings.ExcludedSchemas = new HashSet <String>(excludedSchemas); } if (filter != null) { informationSchemaSettings.ObjectFilter = Enum.Parse <DbObjectFilter>(filter, true); } if (informationSchemaMappingFileName != null) { String json = File.ReadAllText(informationSchemaMappingFileName); var informationSchemaMapping = System.Text.Json.JsonSerializer.Deserialize <InformationSchemaMapping>(json) !; informationSchemaSettings.Operations = informationSchemaMapping.Operations; informationSchemaSettings.Tables = informationSchemaMapping.Tables; } var schemaFactory = new DynamicSchemaFactory(provider, connectionString); using (ProviderSpecificSchema providerSchema = schemaFactory.CreateSchema(useRelationalNulls)) { IEdmModel edmModel = DynamicMiddlewareHelper.CreateEdmModel(providerSchema, informationSchemaSettings); app.UseOdataToEntityMiddleware <OePageMiddleware>(basePath, edmModel); } }
private static EdmModel CreateDynamicEdmModel(bool useRelationalNulls) { ProviderSpecificSchema providerSchema = DynamicDataContext.Program.CreateSchemaSqlServer(useRelationalNulls); //ProviderSpecificSchema providerSchema = DynamicDataContext.Program.CreateSchemaPostgreSql(useRelationalNulls); //ProviderSpecificSchema providerSchema = DynamicDataContext.Program.CreateSchemaMySql(useRelationalNulls); InformationSchemaSettings informationSchemaSettings = DynamicDataContext.Program.GetSettings(); using (var metadataProvider = providerSchema.CreateMetadataProvider(informationSchemaSettings)) { var typeDefinitionManager = DynamicTypeDefinitionManager.Create(metadataProvider); var dataAdapter = new DynamicDataAdapter(typeDefinitionManager); return(dataAdapter.BuildEdmModel(metadataProvider)); } }
public static IEdmModel CreateEdmModel(ProviderSpecificSchema providerSchema, InformationSchemaSettings informationSchemaSettings) { return(CreateEdmModel(providerSchema, informationSchemaSettings, new DynamicTypeDefinitionManagerFactory())); }
public static IEdmModel CreateEdmModel(ProviderSpecificSchema providerSchema, InformationSchemaSettings informationSchemaSettings, DynamicTypeDefinitionManagerFactory factory) { using (var metadataProvider = providerSchema.CreateMetadataProvider(informationSchemaSettings)) { DynamicTypeDefinitionManager typeDefinitionManager = factory.Create(metadataProvider); var dataAdapter = new DynamicDataAdapter(typeDefinitionManager); return(dataAdapter.BuildEdmModel(metadataProvider)); } }