让Ef.DbContext输出SQL

1、在YourDbContext构造函数中配置Database.Log。

1 public partial class XxxEntities: DbContext
2     {
3         public XxxEntities()
4             : base("name=XxxEntities")
5         {
6             System.Diagnostics.Debug.WriteLine("--实例化DbContext--");
7             Database.Log = x => { System.Diagnostics.Debug.WriteLine(x); };
8         }
9     }

2、在Debug(F5)环境下测试,才能在output窗口中输出SQL信息。

 1 --实例化DbContext--
 2 已于 2015/6/2 12:51:38 +08:00
 3  打开了连接
 4 SELECT
 5     [Extent1].[CoSetID] AS [CoSetID],
 6     [Extent1].[BeginTime] AS [BeginTime],
 7     [Extent1].[EndTime] AS [EndTime],
 8     [Extent1].[CreateTime] AS [CreateTime],
 9     [Extent1].[CreatorID] AS [CreatorID],
10     [Extent1].[Creator] AS [Creator],
11     [Extent1].[LastUpdateTime] AS [LastUpdateTime],
12     [Extent1].[LastEditorID] AS [LastEditorID],
13     [Extent1].[LastEditor] AS [LastEditor],
14     [Extent1].[IsEnabled] AS [IsEnabled],
15     [Extent1].[IsDeleted] AS [IsDeleted],
16     [Extent1].[Timestamp] AS [Timestamp]
17     FROM [dbo].[CourseSet] AS [Extent1]
18     WHERE 0 = [Extent1].[IsDeleted]
19     ORDER BY [Extent1].[BeginTime] ASC
20
21
22 -- 正在 2015/6/2 12:51:39 +08:00
23  执行
24 -- 已在 25 毫秒内完成,结果为: SqlDataReader
25
26
27
28 已于 2015/6/2 12:51:39 +08:00
29  关闭了连接

默认情况下,VS会输出许多其它类型的消息,但是可以在output窗口中右击选择需要输出的消息类型。

时间: 2024-08-29 18:45:32

让Ef.DbContext输出SQL的相关文章

EF中执行sql语句

EF原理 EF 会自动把 Where().OrderBy().Select()等这些编译成"表达式树(Expression Tree)",然后会把表达式树翻译成 SQL 语句去执行.(编译原理,AST)因此不是"把数据都取到内存中,然后使用集合的方法进行数据过滤",因此性能不会低.但是如果这个操作不能被翻译成 SQL 语句,则或者报错,或者被放到内存中操作,性能就会非常低 跟踪EF的查询Sql语句: DbContext 有一个 Database 属性,其中的 Log

ibatis配置log4j输出sql日志信息

为了在开发过程更加直观,我们需要将ibatis日志打开以便观察ibatis运作的细节. ibatis采用Apache common_logging,并结合Apache log4j作为日志输出组件. 在CLASSPATH中新建log4j.properties配置文件,内容如下: log4j.rootLogger=DEBUG,stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layo

EF中使用SQL语句或存储过程

EF中使用SQL语句或存储过程或视图 1.无参数查询var model = db.Database.SqlQuery<UserInfo>("select* from UserInfoes ").ToList(); 2.有参查询var model = db.Database.SqlQuery<UserInfo>("select* from UserInfoes where [email protected] ",new SqlParameter

linq to ef(相当于sql中in的用法)查询语句

select * from DoctorInfo doctor where doctor.HosDepartId in (select Id from HospitalDepartment hd where hd.DepartmentId=5) var a=from d in _entity.HospitalDepartment where d.DepartmentId==5 select d; List<int> lst=new List<int>();foreach(var b

Attaching detached POCO to EF DbContext - simple and fast

Introduction Recently I was playing around with Entity Framework (EF) and evaluating it for some projects. I had a very hard time figuring out how to attach detached object graph to DBContext in fast and reliable way. Here I am sharing simple AttachB

NHibernate输出SQL语句

用了NHierbate之后,很少需要写原生的SQL语句,由于总是看不到SQL语句,所以有时候对SQL调优非常不利.因此产生了让NHibernate输出它所生成的SQL语句的想法,以便于后续调优. 一.在控制台输出SQL语句 在控制台程序中,要查看NHibernate所生成的SQL语句,方法非常简单,只需要改下配置文件就OK了. <property name="show_sql">true</property> <property name="fo

.NET在EF中使用sql,用动态类吧!

.NET在EF中使用sql,用动态类吧! 前言 在.NET中使用Entity Framework能快速.方便地结合LINQ来对数据库进行一系列的增删改查操作.但是由于EF根据表达式最后生成通用的sql来执行,进行具体的数据库操作.根据本人使用EF的经验,对于增.删.改的操作,可以直接使用EF的接口进行快速开发.但是对于查询的操作,最好是使用EF调用sql来操作. 问题呈现 在EF中调用sql进行数据查询后,需要返回一个指定类型的数据列表,那么这个类型是需要在调用的时候指定的.我们就会遇到这种问题

EF架构~为EF DbContext生成的实体添加注释(T5模板应用)

相关文章系列 第八回 EF架构~将数据库注释添加导入到模型实体类中 第二十一回  EF架构~为EF DbContext生成的实体添加注释(T4模板应用) 第二十二回EF架构~为EF DbContext生成的实体添加注释(T5模板应用) 嗨,没法说,EF4的TT模版加上注释后,升级到EF5的TT模版后,注释就不通用了,所以,还得再研究一下,然后把操作方法再分享出来,没辙的微软! T4模版可能有些凌乱,这在T5模版里有了不错的改进,但我希望解决的问题在T5里并没有得到解决,那就是TT类文件自动得到E

如何重写EF DBContext 获取链接字符串的方法

public partial class byvarDBFirst: DbContext { //使用自定义连接串 private static string GetEFConnctionString() { //string connString = "metadata=res://*/EFModel_FromDb.csdl|res://*/EFModel_FromDb.ssdl|res://*/EFModel_FromDb.msl;provider=System.Data.SqlClient