博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ObjectContext,DataContext和DBContext 分别获取linq 的sql方法
阅读量:7169 次
发布时间:2019-06-29

本文共 1673 字,大约阅读时间需要 5 分钟。

ObjectContext

先定义一个扩展方法:

public static string ToTraceString
(this IQueryable
t) { string sql = ""; ObjectQuery
oqt = t as ObjectQuery
; if (oqt != null) sql = oqt.ToTraceString(); return sql; }

使用方法:

var query = db.Call.Where(a => a.CustomerId == id && a.IsActive == "Y"); //不能ToList(),必须为IQueryble
类型
var sql= query.ToTraceString();

 

 

DataContext:

定义一个输出到debug窗口的类:

public  class DebugTextWriter : System.IO.TextWriter    {        public override void Write(char[] buffer, int index, int count)        {            System.Diagnostics.Debug.Write(new String(buffer, index, count));        }        public override void Write(string value)        {            System.Diagnostics.Debug.Write(value);        }        public override Encoding Encoding        {            get { return System.Text.Encoding.Default; }        }    }

 

使用:

using (var db = new NorthwindDataContext())            {                List
calls = (from p in db.Call where p.CustomerId == "12414" orderby p.UpdateTime select p).ToList(); //必须Tolist查询,延迟加载无法获得sql语句 db.Log=new DebugTextWriter(); }

 注:DataContext也可以使用下列ToString()方法。

 

DBContext 最简单,只需要ToString()方法。

var query = db.Call.Where(a => a.CustomerId == id && a.IsActive == "Y"); //不能ToList(),必须为IQueryble
类型 var sql = query.ToString();

 

 

转载于:https://www.cnblogs.com/Benjamin/p/3510448.html

你可能感兴趣的文章
201621123018《java程序设计》第11周作业总结
查看>>
Unity AngryBots愤怒的机器人demo研究
查看>>
数据科学入门 (一) —— 数据
查看>>
Android源码设计模式-中介者模式
查看>>
优化体系结构 - 数据外置减少中间表
查看>>
用户超5亿,三年投10亿,开发者如何抢滩支付宝小程序蓝海?
查看>>
教育部下令中小学推广编程教育,全民AI真的要来了
查看>>
SOA旅程:从了解业务到敏捷架构
查看>>
华为2018:年收入首破千亿美元大关,研发投入过千亿
查看>>
Mysql数据库备份和还原
查看>>
[译] 通过后台数据预获取技术实现性能提升
查看>>
ANGULAR JS常用指令NG-IF、NG-CLASS、NG-OPTION、NG-VALUE、NG-CLICK是如何使用的?
查看>>
cocos creator 视频交互游戏
查看>>
Android学习笔记15-从源码分析Activity的创建过程
查看>>
SpringMVC jsonView 注解笔记
查看>>
学习第二天笔记
查看>>
学习笔记
查看>>
Android做按住显密码的View
查看>>
静态路由原理及实验
查看>>
Android——自定义Dialog
查看>>