C#中LINQ怎么生成下面那条SQL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中LINQ怎么生成下面那条SQL相关的知识,希望对你有一定的参考价值。

通常有三种常用的方法用来追踪由 LINQ To SQL 提供器生成的 SQL 命令:用 DataContext.log ,用 DataContext.GetCommand ,和用 LINQ To SQL 调试平台。
1) 用 DataContext.log
这句代码可以使生成的 SQL 显示在控制台窗口。这个 SQL 可以是查询,插入,更新和删除命令。
=======================================================
db.Log = Console.Out;
=======================================================
附加参考:
http://msdn.microsoft.com/en-us/library/bb386961.aspx
2) 用 DataContext.GetCommand
这个方法提供了有关 LINQ To SQL 生成的 SQL 命令的相关信息,但是它仅仅是获取方法而不影响 DataContext 的状态。请注意以下事项(引自 MSDN 文档):
· 参数必须非空,否则会抛出一个空参数异常。
· 正常的 LINQ 查询转换为 SQL 查询执行抛出异常的申请不能被转换。
· 只有以一个查询命令返回。特别是额外的命令,这是渴望加载命令,不包括在内。
· DataContext 不跟踪用户处理的命令,例如从返回的命令执行的结果不会被追踪,从而不影响 DataContext 的状态。
下面的示例显示 SQL 命令生成的控制台窗口中的 LINQ To SQL 查询。
======================================================
MyDataContextdb = new MyDataContext();
var query = from d in db.Departments select d;
DbCommand dc = db.GetCommand(q);
Console.WriteLine(dc.CommandText);
=======================================================
附加参考:
http://msdn.microsoft.com/en-us/library/bb882652.aspx

3) 用 LINQ To SQL 调试平台
LINQ To SQL 调试平台通过看见在 Visual Studio 调试平台 生成的 SQL 可以帮助我们调试 LINQ to SQL IQueryable<> 查询语句。我们也可以在平台上执行生成的 SQL 语句来检查返回值。
要安装 LINQ to SQL 调试平台,请按照以下步骤:
a) 下载 LINQ to SQL Visualizer.zip 压缩包在 这儿 。
b) 关闭正在与性的各种版本的 visual studio 2008 。
c) 从 .zip 压缩包的 /bin/debug/ 路径复制 SqlServerQueryVisualizer.dll 程序集到本地路径 /Program Files/Microsoft Visual Studio9.0/Common7/Packages/Debugger/Visualizers/ 。
d) 再次启动 Visual Studio2008 。现在我们就可以用 LINQ to SQL 调试平台了。
参考技术A 请提交SQL语句

c# ef框架怎么使用linq语句多表查询?

如题,就是两个表以上的查询,不用sql语句是否能够实现?

参考技术A

    excellentmcoinEntities dbcontext = new excellentmcoinEntities();  

    //实例化viewmodel实体  

    List<userModel> listUser = new List<userModel>();  

    //t_user,t_grade,t_states,t_charcater四张表联查,抽取中其中的字段  

    listUser = (from u in dbcontext.t_user  

    join g in dbcontext.t_grade on u.gradeID equals g.gradeID  

    join s in dbcontext.t_states on u.state equals s.statesID  

    join c in dbcontext.t_character on u.levelID equals c.levelID  

    select new userModel()  

      

    userID=u.userID,  

    userName=u.userName,  

    userGrade=g.userGrade,  

    userStates=s.userSates,  

    userLevel=c.userLevel,  

    totalMcoin=u.totalMcoin  

    ).ToList();  

    return listUser;  

本回答被提问者和网友采纳
参考技术B 两个表以上的查询是什么意思?
Join吗?

以上是关于C#中LINQ怎么生成下面那条SQL的主要内容,如果未能解决你的问题,请参考以下文章

使用相同的 SQL 生成输出将 T-SQL 转换为 Fluent Linq C#

c# ef框架怎么使用linq语句多表查询?

c# linq 动态多条件查询语句的写法

C# linq 多表in语句查询

C#:SQL 查询生成器类

使用 C# 和 Linq 动态生成 kml 文件 [重复]