zoukankan      html  css  js  c++  java
  • ObjectContext,DataContext和DBContext 分别获取linq 的sql方法

    ObjectContext

    先定义一个扩展方法:

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

    使用方法:

      var query = db.Call.Where(a => a.CustomerId == id && a.IsActive == "Y"); //不能ToList(),必须为IQueryble<T>类型
     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<Call> 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<T>类型
    var sql = query.ToString();
  • 相关阅读:
    ng-class中的if else判断
    Sass 的使用
    pre 标签的使用
    C++操作 SQL数据库 实例 代码步骤
    自己写的一个操作Mysql的简单的实例
    C++ 链接Mysql 函数介绍
    Mysql 操作命令 详解
    MFC程序开始的执行过程详述
    Java各种日期格式的获取和设置指定日期
    DM8168 OpenCV尝试与评估(编译ARM版OpenCV)
  • 原文地址:https://www.cnblogs.com/Benjamin/p/3510448.html
Copyright © 2011-2022 走看看