/// <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);
        }
Exemplo n.º 2
0
        /// <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);
 }
Exemplo n.º 4
0
 /// <summary>
 /// 初始化Ef配置
 /// </summary>
 public EfConfig()
 {
     SqlQuery = new SqlQueryConfig();
 }