internal DynamicMetadataProvider(ProviderSpecificSchema informationSchema, InformationSchemaSettings informationSchemaSettings)
        {
            InformationSchema          = informationSchema;
            _informationSchemaSettings = informationSchemaSettings;

            _schemaCache = SchemaCacheFactory.Create(informationSchema, _informationSchemaSettings);
        }
示例#2
0
        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();
        }
示例#3
0
        // 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);
            }
        }
示例#4
0
        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));
     }
 }