该功能是替换ADO.NET执行SQL的所有代码 , 比如我想通过Http去操作数据库等
AOP只能处理 SQL、参数、和添加回调函数,本质上还是会走ADO.NET https://www.donet5.com/Home/Doc?typeId=1204
中间管道: 是替换 ADO底层全部数据库操作方法
扩展库是根据规范创建SQL去支持不同的数据库和DbType进行切换 https://www.donet5.com/Home/Doc?typeId=2411
中间管道: SQL参数是固定的,你可以根据DbType拿到固定的,去处理你的结果
跨服务器将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 里面构造的值
我们可以根据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里面构造的值
2016 © donet5.comApache Licence 2.0