手把手教你調試Entity Framework 6源碼

來源:互聯網
上載者:User

標籤:style   class   blog   code   http   tar   

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 EFSrcTest2 {3     class Teacher4     {5         public int ID { get; set; }6         public string FirstName { get; set; }7     }8 }

 

1 namespace EFSrcTest2 {3     class SchoolContext : DbContext4     {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源碼調試旅途吧。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.