Entity Framework with MySQL 学习笔记一(查看EF和SQL请求日志)
做数据库的一向来都会很注意请求的次数还有语句。这关系到很多性能的问题。
因此在使用EF的时候如果不了解原理很可能会搞出很糟糕的请求。
所以呢,在还没有搞懂EF前最基本的是你得"看得见",EF为我们生成了什么样的 SQL语句,和访问了多少次SQL
其实有很多很好的工具可以实现这些东西,但是我懒的去找来试,所以呢找了一个简单又勉强可以用用的。
这个是微软本身的日志
参考 :
http://msdn.microsoft.com/en-us/data/jj556606 -Logging Database Operations to a File (EF6.1 Onwards)
在我们的web config 加上这个 interceptors
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
<interceptors>
<interceptor type="System.Data.Entity.Infrastructure.Interception.DatabaseLogger, EntityFramework">
<parameters>
<parameter value="D:\vs2014\ProjectLearn\entitysix\EFLog\LogOutput.txt"/> <!--指定你要保存文件到哪-->
<parameter value="false" type="System.Boolean"/> <!--false表示每次重启app就"不会"把之前的洗掉,true就会-->
</parameters>
</interceptor>
</interceptors>
</entityFramework>
运行后就可以查看了
Opened connection at // :: +:
SELECT
`Extent2`.`id`,
`Extent2`.`code`,
`Extent2`.`name`
FROM `prod_category_vs_prod` AS `Extent1` INNER JOIN `prod` AS `Extent2` ON `Extent1`.`prod_category_id` = `Extent2`.`id`
WHERE `Extent1`.`prod_id` = @EntityKeyValue1
-- EntityKeyValue1: '' (Type = Int32, IsNullable = false)
-- Executing at // :: +:
-- Completed in ms with result: EFMySqlDataReader Closed connection at // :: +:
大概是这样。
如果你有更好用有容易安装的,请告诉我吧!感谢 ^^
Entity Framework with MySQL 学习笔记一(查看EF和SQL请求日志)的更多相关文章
- Entity Framework with MySQL 学习笔记一(安装)
声明 : 数据库是Mysql,本人的程度只到会写sql语句(不会储蓄过程), c# 会基本的ADO.NET数据库访问,LINQ基础. 这篇只做个人学习|温习作用. 新手可以参考,也请高手指正错误, ...
- Entity Framework with MySQL 学习笔记一(拦截)
参考 : http://msdn.microsoft.com/en-us/data/dn469464.aspx EF 允许我们在发送SQL请求和返回数据时做一些拦截的动作 比如可以自定义写 log , ...
- Entity Framework with MySQL 学习笔记一(乐观并发)
在做项目时,通常我们对乐观并发有几种处理模式 1. 告诉用户此数据已被其他人捷足先登,更改了.你就算新一下重来吧. 2.直接把数据覆盖上去,我最大. 3.用被人的数据. 这里给出 code first ...
- Entity Framework with MySQL 学习笔记一(验证标签)
直接上代码 [Table("single_table")] public class SingleTable { [Key] public Int32 id { get; set; ...
- Entity Framework with MySQL 学习笔记一(复杂类型 Complex Types)
有时候我们希望在sql一个表里面的column, 一部分被分化成另一个class 典型的例子是 Address 直接看代码: [Table("member")] public cl ...
- Entity Framework with MySQL 学习笔记一(继承)
基本上sql中要表示继承关系有3中方式. 分别是,1表继承(TPH),2表继承(TPC),3表继承(TPT) 1表 : Person id type name classroom office 1 s ...
- Entity Framework with MySQL 学习笔记一(关系整理版)
1-1 设置 //DataAnnotation 1-1 | 1-0 table //SQLtable : member , columns : memberId, name //SQL basic l ...
- Entity Framework with MySQL 学习笔记一(insert,update,delete)
先说说 insert 吧. 当EF执行insert时,如果我们传入的对象是有关联(1对多等)的话,它会执行多个语句 insert到多个表, 并且再select出来填充我们的属性(因为有些column默 ...
- Entity Framework with MySQL 学习笔记一(关系)
这一篇说说 EF Fluent API 和 DataAnnotations 参考 : http://msdn.microsoft.com/en-us/data/jj591617.aspx http:/ ...
随机推荐
- Ubuntu runlevel修改
安装Unbuntu 12.04. 据说Ubunut的一个UI相对友好的Linux版本,但我的需求是仅仅将其作为服务器使用,偶尔用用UI界面.所以我希望启动Ubuntu时,直接进入Shell命令行. 印 ...
- JS~js里实现队列与堆栈
在面向对象的程序设计里,一般都提供了实现队列(queue)和堆栈(stack)的方法,而对于JS来说,我们可以实现数组的相关操作,来实现队列和堆栈的功能,看下面的相关介绍. 一 看一下它们的性质,这种 ...
- View Controller 生命周期的各个方法的用法
(void)awakeFromNib; 这个方法用的时候,outlet还没有连接起来,是view Controller刚从storyboard建的时候,没有完全建好,不过可能有一些事情要在这个方法里面 ...
- Android Studio常用插件
ButterKnife 这个开源库可以让我们从大量的findViewById()和setonclicktListener()解放出来,其对性能的影响微乎其微(查看过Butter Knife的源码,其自 ...
- Android消息机制(1)
在Android中,线程内部或者线程之间进行信息交互时经常会使用消息,这些基础的东西如果我们熟悉其内部的原理,将会使我们容易.更好地架构系统,避免一些低级的错误.在学习Android中消息机制之前,我 ...
- PHP Strict standards:Declaration of … should be compatible with that of…(转)
今天把原来一份很老的PHP代码导入到了PaaS上,出现了许多Strict standards:Declaration of … should be compatible with that of…这样 ...
- 阿里云linux的nginx下面配置多站点
假设有服务器ip为 114.214.85.35 域名1为 www.jieshendada.cn 域名2为 www.jieshenxiaoxiao.cn 1.首先打开nginx域名配置文件存放目录:/ ...
- Xml序列化自引用/循环引用问题2
1.类定义: public class Student { public int ID { get; set; } public string Name { get; set; } //[XmlIgn ...
- smarty半小时快速上手教程(转)
来源于:http://www.chinaz.com/program/2010/0224/107006.shtml 一:smarty的程序设计部分: 在smarty的模板设计部分我简单的把smarty在 ...
- sql 判断表、列、视图等是否存在
1 判断数据库是否存在 if exists (select * from sys.databases where name = '数据库名') drop database [数据库名] 2 判 ...