欢迎光临
我们一直在努力

手把手教你调试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

理论上,只要安装了VS 2013即可。 

 

0  下载EF 6源码

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

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

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

 

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

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

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

 

1  建立一个控制台项目

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

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

 

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

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

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

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

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

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

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

 

3  编译EntityFramework及EntityFramework.SqlServer项目

这一步有两种做法:

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

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

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

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

 

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源码调试旅途吧。

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《手把手教你调试Entity Framework 6源码》
文章链接:https://www.456zj.com/20141.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址