索引: 目錄索引 SQL Debug 信息說明 一. 對 XConnection 對象 未開啟 OpenDebug, 在 VS 狀態下,將預設在 VS 視窗 列印出 參數化的 SQL 執行語句: 新增: 以 MySQL 為例,生成 參數化 SQL ,在 VS 輸出視窗 如下: 刪除: 以 MySQL ...
索引:
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 周一