public static async Task <TestQueryRunnerResult> Execute(string query, Action <DataContext> seeder, Action <IQueryConfigurator <DataContext> > options = null) { seeder = seeder ?? throw new InvalidOperationException(nameof(seeder)); options = options ?? ConfigureDefaultQueryProvider; using (var connection = new SqliteConnection("DataSource=:memory:")) { connection.Open(); var builder = new DbContextOptionsBuilder <DataContext>().UseSqlite(connection); using (var context = new DataContext(builder.Options)) { context.Database.EnsureCreated(); // Seed seeder(context); // Initialize provider. var provider = QueryProviderBuilder.Build(context, options); // Execute query. var result = await provider.Query <Document>(context, query).ToListAsync(); return(new TestQueryRunnerResult { Query = query, Result = result }); } } }
public void Initialize(Action <IQueryConfigurator <DataContext> > configurator) { using (var context = new DataContext(_builder.Options)) { _provider = QueryProviderBuilder.Build(context, configurator); } }
public static void AddQueryProvider <TContext>(this IServiceCollection services, Action <IQueryConfigurator <TContext> > configurator) where TContext : DbContext { // Register the query provider. services.AddSingleton(f => { var factory = f.GetRequiredService <IServiceScopeFactory>(); using (var scope = factory.CreateScope()) { var context = scope.ServiceProvider.GetRequiredService <TContext>(); return(QueryProviderBuilder.Build(context, configurator)); } }); }
public static void Main(string[] args) { Console.WriteLine("Initializing database..."); using (var context = MovieContext.Initialize()) { // Build a query provider for the context. var provider = QueryProviderBuilder.Build(context, options => { options.Configure <Movie>(movie => { movie.Map("Id", e => e.MovieId); movie.Map("Title", e => e.Name); movie.Map("Year", e => e.ReleasedAt); movie.Map("Score", e => e.Rating); movie.Map("Seen", e => e.Seen); }); }); // Run the application. new Application(context, provider).Run(); } }