Sql中间管道 5.0.6.4

SQL中间管道

该功能是替换ADO.NET执行SQL的所有代码 , 比如我想通过Http去操作数据库等 

疑问

1. 和AOP区别

AOP只能处理 SQL、参数、和添加回调函数,本质上还是会走ADO.NET   https://www.donet5.com/Home/Doc?typeId=1204

中间管道: 是替换 ADO底层全部数据库操作方法

2.和扩展库的区别

扩展库是根据规范创建SQL去支持不同的数据库和DbType进行切换   https://www.donet5.com/Home/Doc?typeId=2411

中间管道: SQL参数是固定的,你可以根据DbType拿到固定的,去处理你的结果


使用例案

将Sql传给其他服务器返回结果

跨服务器将SQL传给其他服务器,让其他服务器执行数据库操作将结果返回

 db.CurrentConnectionConfig.SqlMiddle = new SqlMiddle
 {
                 IsSqlMiddle=true,//开启中间管到
                 ExecuteCommand = (sql,pars) => {
                           return  Httpxx.GetJavaServerExecuteCommand(sql,pars);//httpxx是你自个实现的类
                 },
                GetScalar = (sql, pars) => {
                          ...
                },
                GetDataSetAll = (sql, pars) => {
                          ....
                },
                GetDataReader = (sql, pars) => {                   
                      //看下面有json转dr
                }
                //...
    };
 var dt=db.Insertable(obj).ExecuteCommand ();//等于 SqlMiddle.ExecuteCommand 里面构造的值

解析SQL去支持其他数据库

 我们可以根据DbType生成不同风格的SQL,比如这些SQL要给Redis或者其他数据库去用是不能直接用的,

 这个时候我需要写解析这个SQL 或者 作一些替换处理

比如SQL  select * from table where  id=1  ,那我转Redis  就是 GetCache(table_1) 能过Key的方式去获取

比如 一款X数据库和MYSQL语法比较接近 那么我们只要把SQL处理一下就能用了

 db.CurrentConnectionConfig.SqlMiddle = new SqlMiddle
 {
                 IsSqlMiddle=true,//开启中间管到
                 ExecuteCommand = (sql,pars) => {   
                        return  GetRedisExecuteCommand(sql,pars);//根据SQL解析成REDIS返回结果           
                 },
                 GetScalar = (sql, pars) => {
                         return  GetRedisScalar(sql,pars);
                 },
                 GetDataSetAll = (sql, pars) => {
                         return  GetRedisDataTable(sql,pars);
                 },
                GetDataReader = (sql, pars) => {   
                    //返回json                
                    var json= jsonRedisDataReader(sql,pars);
                    // 将 JSON 字符串反序列化为 DataTable
                    DataTable dataTable = JsonConvert.DeserializeObject<DataTable>(json);
                    // 返回 DataTable 的 IDataReader
                    return dataTable.CreateDataReader();
                }
                //...
    };
    var dt=db.Queryable<Order>().ToDataTable();//等于 SqlMiddle.GetDataSetAll里面构造的值


关闭
果糖网