Exemplo n.º 1
0
        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));
         }
     });
 }
Exemplo n.º 4
0
        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();
            }
        }