调试Entity FrameWork源码
这里以Entity Framework6.0版本为例
1. 下载Entity Framework的源码,地址:http://entityframework.codeplex.com/SourceControl/latest
2. 利用sn.exe生成*.snk签名文件,这里比如是test.snk
参考地址:http://blog.csdn.net/xuplus/article/details/2417072
3. 将步骤1中下载的源码用vs2012打开,选中"EntityFrameWork" 项目,左键-》属性菜单-》签名
在签名页面中选中2中生成的test.snk文件,去掉“仅延迟签名”checkbox,
其他项目如法炮制,
4. 编译解决方案,copy 解决方案下的bin/debug目录下的dll,到一个目录下,比如说D:\MyDll
5. 打开新的vs2012窗口,新建一个mvc项目,这个以mvc 4为例,移除项目中已经添加的EntityFramework.dll的引用,
添加D:\MyDll\EntityFramework.dll和EntityFramework.SqlServer.dll
6.打开新建项目的Web.Config文件,
将下面的entityFramework section改成如下
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=54a141ccd6ada35a" requirePermission="false" />
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
红色部分为步骤5中EntityFramework.dll的信息,其中PublicKeyToken的值,可以用步骤2中提到的sn.exe查看
打开vs自带的vs命令行工具,输入 sn -T D:\MyDll\EntityFramework.dll回车,输出的值就是PublicKeyToken
7. 运行项目,打断点,调试。