当前位置: 移动技术网 > IT编程>开发语言>.net > MyDAL - .OpenDebug() 与 Visual Studio 输出窗口 使用

MyDAL - .OpenDebug() 与 Visual Studio 输出窗口 使用

2019年05月21日  | 移动技术网IT编程  | 我要评论

漯河格瑞特国际小学,旧金山天气,林晓依

索引:

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 周一

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网