乐清英文网站建设wordpress缩略图只生成full
news/
2025/9/23 13:34:50/
文章来源:
乐清英文网站建设,wordpress缩略图只生成full,南昌地宝网,大连网站制作学校大家在学习entityframework的时候#xff0c;都知道那linq写的叫一个爽#xff0c;再也不用区分不同RDMS的sql版本差异了#xff0c;但是呢#xff0c;高效率带来了差灵活性#xff0c;我们无法控制sql的生成策略#xff0c;所以必须不要让自己缺乏好的工具去监控sql都知道那linq写的叫一个爽再也不用区分不同RDMS的sql版本差异了但是呢高效率带来了差灵活性我们无法控制sql的生成策略所以必须不要让自己缺乏好的工具去监控sql本篇给大家介绍的三种监控手段Log和SqlServer profileef profile。。。一Log监控 这个属于entity framework自带的一个Action方法它给大家带来了不错的用户体验我们可以将其输出放到控制台又或者写入到记事本中。。。这里我就通过EDM来生成codefirst可以看到如下的Database的Log定义然后大家就可以给他灌入一个带string参数的Action方法比如Console.WriteLine。 public Actionstring Log { get; set; }
然后写一个 demo 程序
static void Main(string[] args){using (SchoolDB2Entities dbContext new SchoolDB2Entities()){dbContext.Database.Log Console.WriteLine;dbContext.Students.Add(new Student(){StudentName jack123});dbContext.SaveChanges();}}由于codefirst初始化生成之时内容太多无法一一显示出来。。。为了方便可灌入自定义方法AppendLog比如将其灌入到File中。。。二SqlServer Profile 可以看到SqlServer Profile是放在sqlserver层面上的监控可以监控到各种sql如何流入到sqlserver中但是如果你默认开启的话会看到很多与ef无关的操作比如下面这样那更好的方式是怎么过滤呢其实也很简单我们只需要在ef的connectionstring中塞入一个App标记然后在sqlserver profile上面进行筛选就可以了。1) 第一步在connectionstring中加入applicationNameconnectionStringsadd nameSchoolDB2Entities connectionStringdata source.;initial catalogSchoolDB2;integrated securityTrue;MultipleActiveResultSetsTrue;AppEntityFramework providerNameSystem.Data.SqlClient //connectionStrings2) 第二步在SqlProfile中筛选ApplicationNameEntityFramework的所有记录ok这样我们就配置好了接下来我们将codefirst跑起来可以清清楚楚的看到现在的profile中仅仅只有EntityFramework标记生成的sql语句了。三Entity Framework Profile 首先这个是一款商业软件免费试用期是30天不过网上还是能够搜索到各种破解版废话不多说我们通过nuget下载一下下载完之后再看一下packages文件夹中的子文件夹EntityFrameworkProfiler.3.0.3103.0找到一个叫做efprof.exe的程序这个就是要开启的监控。打开软件后大家可以自己注册一下生成一个licence的xml然后大家就可以看到这样的一个????????的界面了。。。。更加????????的是会在我们的Main函数中注入一段开启逻辑并且在App_Start中生成了一个cs一个vb文件如下
class Program{static void Main(string[] args){App_Start.EntityFrameworkProfilerBootstrapper.PreStart();using (SchoolDB2Entities dbContext new SchoolDB2Entities()){dbContext.Database.Log AppendLog;dbContext.Students.Add(new Student(){StudentName jack123});dbContext.SaveChanges();}}static void AppendLog(string str) System.IO.File.AppendAllText(Environment.CurrentDirectory \\1.txt, str, Encoding.Default);}既然代码都生成好了。。。那就留给我要做的事情就是Ctrl F5了。可以看到efprofile可以抓拍到各种create table语句包括各种面板信息Application StatisticsAnalysis,Duration等等。。。最重要的我们还能看到 “Query plan”比如下面我构造一个相对比较复杂的sql语句
class Program{static void Main(string[] args){App_Start.EntityFrameworkProfilerBootstrapper.PreStart();using (SchoolDB2Entities dbContext new SchoolDB2Entities()){var query (from n in dbContext.Studentsfrom m in dbContext.StudentAddresseswhere n.StudentID m.StudentIDgroup n.StudentID by n.StudentName into gselect new { g.Key, count g.Count() }).ToList();dbContext.SaveChanges();}}}然后执行一下看看efprofile监视到db中是如何生成query plan的快照的。。。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912704.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!