手把手教你调试Entity Framework 6源码

0  摘要

本文讲述在Visual Studio 2013(VS 2013)下调试Entity Framework 6(EF 6)源码的配置过程。原则上,VS 2012也适用。

本码蚁之前打算编写《Entity Framework 6 源码调试与分析》系列博文,现因个人健康原因,需休息较长时间,不得不放弃这一计划。离开前,把调试EF源码的办法写成教程,希望对那些像我一样的新手有所帮助。

1  正文

软件环境

操作系统: Windows 8.1 Update 1

IDE      : Visual Studio 2013 Update 2

0  下载EF 6源码

最新的源码是EF 6.1.0,需用Git获取代码。关于如何在Windows下安装配置Git,不在本文讨论范围内。

在EF主页上找到SOURCE CODE标签,点击Clone,得到git clone地址https://git01.codeplex.com/entityframework,如下图所示。

使用Git获取EF源码,完整代码如下图所示。

现在,直接打开EntityFramework.sln就可以调试EF源码。下面以新建解决方案的方式,将EF源码添加到我们的项目中进行调试。

1  建立一个控制台项目

在VS中创建一个C#控制台项目,.NET版本可选4.5或4.5.1,建议选4.5,项目名称随意,如下图所示。其他项目类型如MVC也是可以的,看个人喜好。

2  添加EntityFramework及EntityFramework.SqlServer到解决方案中

通过添加已存在的项目到解决方案中,我们得到了标题中两个项目的引用(具体路径为你存放EF源码的路径),如下图所示。

以同样的方式添加对EntityFramework.SqlServer项目的引用,结果如下图所示。

在EFSrcTest项目中添加对这两个项目的引用。

3  编译EntityFramework及EntityFramework.SqlServer项目

这一步有两种做法:

一是修改这两个项目的输出路径到你所建的控制台项目的debug目录或者你指定的目录;

二是编译然后把DLL复制到你的项目的debug或者你指定的目录,缺点是你对EF源码所作的修改,重新编译后都需要再次复制DLL到你指定的目录才能生效。不过,像我这样的初学者是不太可能修改EF源码的,所以按方式二继续。

编译控制台项目,复制EntityFramework及EntityFramework.SqlServer项目输出的DLL及PDB符号文件到控制台项目的Debug目录下(或你指定的目录,在此不再赘述),如下图所示。

现在,调试所需的动态链接库文件都准备好了,接下来是最后一步。

4  配置控制台项目的App.Config文件

这里以Code First方式进行,配置内容和Mode First、Database First有所区别,主要是连接字符串上的区别。

 1 <?xml version="1.0" encoding="utf-8"?>
 2
 3 <configuration>
 4   <configSections>
 5     <section name="entityFramework"
 6              type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
 7              requirePermission="false" />
 8   </configSections>
 9   <startup>
10     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
11   </startup>
12   <entityFramework>
13     <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
14       <parameters>
15         <parameter value="v11.0" />
16       </parameters>
17     </defaultConnectionFactory>
18     <providers>
19       <provider invariantName="System.Data.SqlClient"
20                 type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
21     </providers>
22   </entityFramework>
23 </configuration>

section节点很关键,如果版本错了,则运行报错。

至此,配置工作已全部完成。最后,编写几个简单的类进行调试。

5  以Code First方式创建数据库

创建一个只包含一个表的数据库,代码如下:

1 namespace EFSrcTest
2 {
3     class Teacher
4     {
5         public int ID { get; set; }
6         public string FirstName { get; set; }
7     }
8 }
1 namespace EFSrcTest
2 {
3     class SchoolContext : DbContext
4     {
5         public DbSet<Teacher> Teachers { get; set; }
6     }
7 }
 1 namespace EFSrcTest
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {
 7             using (var ctx = new SchoolContext())
 8             {
 9                 ctx.Teachers.Add(new Teacher { FirstName = "米高" });
10                 ctx.SaveChanges();
11             }
12         }
13     }
14 }

现在,在第7行using (var ctx = new SchoolContext())中打上断点进行调试,按F11可进入EF源码,如下图所示。

现在,开启你的Entity Framework 6源码调试旅途吧。

手把手教你调试Entity Framework 6源码

时间: 2024-08-07 04:58:32

手把手教你调试Entity Framework 6源码的相关文章

《Entity Framework 6 源码分析》

背景 以Code First方式编写简单代码,按源码执行过程,逐步讲解Entity Framework工作原理.本系列博文系我学习Entity Framework 6 Code First的总结之作.学习过程中参考了大量MSDN资料,因参考资料过多,且皆可从EF主页索引到,故不一一列举.所有阅读过的正式出版的书籍,详见参考文献一节.部分章节因论述需要所引用其它.NET书籍将在该章节内注明引用信息.为了分析代码,我经常访问.NET参考源码页面. 因水平有限,若有谬误,恳请指正,同时欢迎企鹅群185

Entity Framework 6源码学习--设置调试EF环境

下载源代码 打开https://github.com/aspnet/EntityFramework6下载源代码. 建立调试解决方案 建立一个EntityFramework.Sample.sln在EntityFramework6根目录,建一个Console工程在src目录下,再将EF源代码文件夹中的EntityFramework和EntityFramework.SqlServer加入到解决方案中.如下图所示: 删除延迟签名 打开EntityFramework.EntityFramework.Sql

东方耀 手把手教React Native实战开发视频教程+源码笔记全集

课程序号标题 第0课0.手把手教React Native实战之开山篇_视频 第1课1.手把手教React Native实战之环境搭建_视频_Windows环境 第1课1.手把手教React Native实战之环境搭建[Mac真机]同时调试开发Android&IOS 第2课2.手把手教React Native实战之从React到RN 第3课3.手把手教React Native实战之flexbox布局(RN基础) 第4讲4.手把手教React Native实战之flexbox布局(伸缩属性) 第5讲

手把手教你调试Linux C++ 代码

手把手教你调试Linux C++ 代码 软件调试本身就是一项相对复杂的活动,他不仅要求调试者有着清晰的思路,而且对调试者本身的技能也有很高的要求.Windows下Visual Studio为我们做了很多的工作,使初学者基本上可以获得一个所见即所得的调试体验,相对来说也比较容易上手.然而在linux平台下,一切都显得有些不同,倒不是说GDB有多难,只是对于习惯了visual studio的人来说刚开始会有些不适应.然而对于那些在windows 平台下使用windbg调试代码的人来说,情况会好很多,

手把手搭建Java健身房管理系统【附源码】(毕设)

一.项目简介 本课程演示的是一套基于JavaWeb实现的健身房管理系统 或 健身俱乐部管理系统 或 健身会所管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群. 详细介绍了健身房管理系统的实现,包括:1.项目介绍2.环境搭建3.系统功能4.技术实现5.项目运行6.功能演示 以通俗易懂的方式,手把手的带你从零开始运行本套健身房管理系统,该项目附带全部源码可作为毕设使用. 二.技术实现 1.后台框架:Spring.SpringMVC.Hibernate 2.?UI界面

XposedNoRebootModuleSample 不需要频繁重启调试的Xposed 模块源码例子

XposedNoRebootModuleSample(不需要频繁重启调试的Xposed 模块源码例子) Xposed Module Sample No Need To Reboot When Debug github:https://github.com/asiontang/XposedNoRebootModuleSample @Override public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam loadPac

从零教你如何获取hadoop2.4源码并使用eclipse关联hadoop2.4源码

从零教你如何获取hadoop2.4源码并使用eclipse关联hadoop2.4源码http://www.aboutyun.com/thread-8211-1-1.html(出处: about云开发) 问题导读:1.如何通过官网src包,获取hadoop的全部代码2.通过什么样的操作,可以查看hadoop某个函数或则类的实现?3.maven的作用是什么? 我们如果想搞开发,研究源码对我们的帮助很大.不明白原理就如同黑盒子,遇到问题,我们也摸不着思路.所以这里交给大家一.如何获取源码二.如何关联源

spring framework 4 源码阅读 --- 前期准备

在开始看代码之前,需要做的第一件事是下载代码. 在这里:https://github.com/spring-projects/spring-framework 下载完成了发现使用gradle做的源代码的构建管理工具的. 值得庆幸的事情,spring为导入eclipse写了脚本工具,包解压后结构如下: 发现了一个脚本文件:import-into-eclipse.bat,今天负责导入的就是他了, 等待漫长的编译,这里有个问题,在没有安装gradle的时候,脚本会自动下载gradle 执行完成后是这样

手把手实现Java图书管理系统(附源码)

基于SSM的图书管理系统的设计与实现 一.系统简介 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群. 详细介绍了图书管理系统的实现,包括:1.环境搭建2.系统功能3.技术实现4.项目运行5.功能演示6.系统扩展 以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用. 二.技术实现 1.后台框架:Spring.SpringMVC.MyBatis2.UI界面:BootStr