/// <summary> /// Add in Global.Application_Start.(Static Mode) /// </summary> /// <param name="app"></param> /// <param name="configureOptions"></param> /// <param name="configureResources"></param> /// <returns></returns> public static HttpApplication AddJsonQL(this HttpApplication app, Action <JsonQLOptions> configureOptions, Action <JsonQLResourceTable> configureResources) { jsonQLOptions = new JsonQLOptions(); jsonQLResourceTable = new JsonQLResourceTable(); configureOptions?.Invoke(jsonQLOptions); configureResources(jsonQLResourceTable); jsonQLMiddleware = new JsonQLMiddleware(jsonQLOptions, jsonQLResourceTable); return(app); }
public void ConfigureServices(IServiceCollection services) { services.AddLogging(); services.AddOptions(); services.AddDbContext <DataContext>(builder => { builder.UseSqlite(@"Data Source=.\Database.sqlite"); }); //配置JsonQL的资源列表 services.AddJsonQL(options => { options.AuthorizeAsync = context => Task.FromResult(true); options.JsonQLIncluder = new DynamicJsonQLIncluder(); options.JsonQLEvaluator = new DynamicJsonQLEvaluator(); options.JsonQLLinqer = new DynamicJsonQLLinqer(); }, serviceProvider => { var context = serviceProvider.CreateScope().ServiceProvider.GetRequiredService <DataContext>(); var resourceTable = new JsonQLResourceTable(); resourceTable.AddResource("Orders", new Resource <Order>(context.Orders.AsQueryable())); resourceTable.AddResource("OrderStatusChanges", new Resource <OrderStatusChange>(context.OrderStatusChanges.AsQueryable())); resourceTable.AddResource("UserAccounts", new Resource <UserAccount>(context.UserAccounts.AsQueryable())); resourceTable.AddResource("UserAccountRecords", new Resource <UserAccountRecord>(context.UserAccountRecords.AsQueryable())); resourceTable.AddResource("Users", new Resource <User>(context.Users.AsQueryable())); resourceTable.AddResource("UserProfiles", new Resource <UserProfile>(context.UserProfiles.AsQueryable())); return(resourceTable); }); services.AddJsonQLTester(options => { options.ResourceTypes = new Dictionary <string, Type> { { "Orders", typeof(Order) }, { "OrderStatusChanges", typeof(OrderStatusChange) }, { "UserAccounts", typeof(UserAccount) }, { "UserAccountRecords", typeof(UserAccountRecord) }, { "Users", typeof(User) }, { "UserProfiles", typeof(UserProfile) }, }; }); }