MyDAL - .OpenDebug() 与 Visual Studio 输出窗口 使用
索引:
sql debug 信息说明
一. 对 xconnection 对象 未开启 opendebug, 在 vs 状态下,将默认在 vs 窗口 打印出 参数化的 sql 执行语句:
新增:
1 var m1 = new bodyfitrecord 2 { 3 id = guid.parse("1fbd8a41-c75b-45c0-9186-016544284e2e"), 4 createdon = datetime.now, 5 userid = guid.newguid(), 6 bodymeasureproperty = "{xxx:yyy,mmm:nnn}" 7 }; 8 9 var res1 = await conn.createasync(m1);
以 mysql 为例,生成 参数化 sql ,在 vs 输出窗口 如下:
删除:
1 var res2 = await conn 2 .deleter<bodyfitrecord>() 3 .where(it => it.id == guid.parse("1fbd8a41-c75b-45c0-9186-016544284e2e")) 4 .deleteasync();
以 mysql 为例,生成 参数化 sql ,在 vs 输出窗口 如下:
修改:
1 var pk1 = guid.parse("8f2cbb64-8356-4482-88ee-016558c05b2d"); 2 3 var model = new alipaypaymentrecord(); 4 model.description = "new desc"; // 修改 alipaypaymentrecord 字段 description 的值为: "new desc" 5 model.paymenturl = "new url"; // 修改 alipaypaymentrecord 字段 paymenturl 的值为: "new url" 6 7 // 修改一条数据: alipaypaymentrecord 8 var res1 = await conn.updateasync<alipaypaymentrecord>(it => it.id == pk1, //where条件:it=>it.id==pk1,可输入任意条件的表达式 9 new 10 { 11 model.description, // 修改 alipaypaymentrecord 字段 description 的值 12 model.paymenturl // 修改 alipaypaymentrecord 字段 paymenturl 的值 13 });
以 mysql 为例,生成 参数化 sql ,在 vs 输出窗口 如下:
查询:
1 var res1 = await conn 2 .queryer(out agent agent, out agentinventoryrecord record) 3 .from(() => agent) 4 .innerjoin(() => record) 5 .on(() => agent.id == record.agentid) 6 .querypagingasync(1, 10, () => agent.name);
以 mysql 为例,生成 参数化 sql ,在 vs 输出窗口 如下:
二. 对 xconnection 对象 开启 opendebug, 在 vs 状态下,将在 vs 窗口 打印出 非参数化的 sql 执行语句:
新增:
1 var list = new list<addressinfo>(); 2 for (var i = 0; i < 10; i++) 3 { 4 if (i % 2 == 0) 5 { 6 list.add(new addressinfo 7 { 8 id = guid.newguid(), 9 createdon = datetime.now, 10 contactname = "name_" + i.tostring(), 11 contactphone = "1800000000" + i.tostring(), 12 detailaddress = "address_" + i.tostring(), 13 isdefault = true, // f:bool c:bit(1) 14 userid = guid.newguid() 15 }); 16 } 17 else 18 { 19 list.add(new addressinfo 20 { 21 id = guid.newguid(), 22 createdon = datetime.now, 23 contactname = "name_" + i.tostring(), 24 contactphone = "1800000000" + i.tostring(), 25 detailaddress = "address_" + i.tostring(), 26 isdefault = false, // f:bool c:bit(1) 27 userid = guid.newguid() 28 }); 29 } 30 } 31 32 var res1 = await conn2.opendebug().createbatchasync(list);
以 sql server 为例,生成 非参数化 sql ,在 vs 输出窗口 如下:
删除:
1 var res2 = await conn.opendebug() 2 .deleter<agent>() 3 .where(it => it.pathid == path) 4 .or(it => it.agentlevel == (agentlevel)level) 5 .deleteasync();
以 mysql 为例,生成 非参数化 sql ,在 vs 输出窗口 如下:
修改:
1 // 多 字段 多 set 用法 2 var res1 = await conn.opendebug() 3 .updater<bodyfitrecord>() // 更新表 bodyfitrecord 4 .set(it => it.createdon, datetime.now) // 设置字段 createdon 值 5 .set(it => it.bodymeasureproperty, "{xxx:yyy,mmm:nnn,zzz:aaa}") // 设置字段 bodymeasureproperty 值 6 .where(it => it.id == m.id) 7 .updateasync();
以 mysql 为例,生成 非参数化 sql ,在 vs 输出窗口 如下:
查询:
1 var res5 = await conn.opendebug() 2 .queryer(out agent agent5, out agentinventoryrecord record5) 3 .from(() => agent5) 4 .innerjoin(() => record5) 5 .on(() => agent5.id == record5.agentid) 6 .where(() => agent5.agentlevel == agentlevel.distiagent) // const enum == 7 .querylistasync<agentinventoryrecord>();
以 mysql 为例,生成 非参数化 sql ,在 vs 输出窗口 如下:
三. 其它情况 说明:
a.在 vs 状态下,无论你是否打开 .opendebug(),都不会在 窗口 输出 sql 语句
b..opendebug() 方法 有一个 debugenum 可选枚举参数,默认输出到 vs 输出窗口,当指定 debugenum.console 时,
会输出到 控制台 窗口,这时 在控制台窗口 无论程序是 debug 还是 release 状态运行 都会打印出 非参数化 sql 语句。
蒙
2019-05-20 17:19 周一
下一篇: xml+php动态载入与分页