/// <summary> /// 注册Sql查询服务 /// </summary> /// <param name="services">服务集合</param> /// <param name="configAction">Sql查询配置</param> /// <param name="database">数据库类型</param> /// <param name="entityMatedata">实体元数据解析器类型</param> /// <returns></returns> private static IServiceCollection AddSqlQuery(IServiceCollection services, Action <SqlQueryConfig> configAction, Type database, Type entityMatedata) { if (database != null) { services.TryAddScoped(database); services.TryAddScoped(typeof(IDatabase), t => t.GetService(database)); } services.TryAddScoped <ISqlQuery, SqlQuery>(); if (entityMatedata != null) { services.TryAddScoped(typeof(IEntityMatedata), t => t.GetService(entityMatedata)); } var config = new SqlQueryConfig(); if (configAction != null) { configAction.Invoke(config); services.Configure(configAction); } AddSqlBuilder(services, config); RegisterTypeHandlers(); return(services); }
/// <summary> /// 配置Sql生成器 /// </summary> /// <param name="services">服务集合</param> /// <param name="config">Sql查询配置</param> private static void AddSqlBuilder(IServiceCollection services, SqlQueryConfig config) { switch (config.DatabaseType) { case DatabaseType.SqlServer: services.TryAddScoped <ISqlBuilder, SqlServerBuilder>(); return; case DatabaseType.MySql: services.TryAddScoped <ISqlBuilder, MySqlBuilder>(); return; case DatabaseType.PgSql: services.TryAddScoped <ISqlBuilder, PgSqlBuilder>(); return; default: throw new NotImplementedException($"Sql生成器未实现 {config.DatabaseType.Description()} 数据库"); } }
/// <summary> /// 配置 /// </summary> /// <param name="configAction">配置操作</param> public void Config(Action <SqlQueryConfig> configAction) { SqlQueryConfig = new SqlQueryConfig(); configAction?.Invoke(SqlQueryConfig); }
/// <summary> /// 初始化Ef配置 /// </summary> public EfConfig() { SqlQuery = new SqlQueryConfig(); }