天天看點

[整理]EF6.X更新了什麼(版本曆史中文版)

  下定決心以後用EF6.x版本了。想看看有什麼更新特性,結果去人家github老巢一看,EF7 for vnext,頓時蛋疼了起來。想想國内這種技術氛圍,有多少還在用ASP的,有多少還在用ADO.NET的(我指傳統那種直接sql弄得不亦樂乎的),有多少個aspx結尾的網站還在開發的路上,就不想再多說什麼了。

  EF6是和VS2013一起釋出的,是以要體驗EF6的完整特性請做個自帶VS2013光環的程式員。

  本文基于

http://msdn.microsoft.com/en-us/data/jj574253

 搬運,然後參考了一些連結。栗子見原文。本文純粹概要翻譯。

  EF6以下的見

http://msdn.microsoft.com/zh-cn/data/jj574253

Release  摘要  備注
EF 6.1

1工具整合。 EF Power Tools提供了一個一緻的方式去建立一個新的EF模型

 2事務送出失敗處理.CommitFailureHandler利用了一個攔截事務操作的新特性,能夠自動從失敗的連接配接中恢複并送出事務

3IndexAttribute.在Code First model裡的屬性上标注 [Index],Code First 就會在資料庫裡對相應字段建立索引。

4公共映射API.該API用來訓示屬性和類是如何對應資料庫的字段列和資料表的,通路修飾符從以往的internal提升為public。

5在配置檔案(APP/Web.config)裡配置攔截器而無需重新編譯程式。

By the way,System.Data.Entity.Infrastructure.Interception.DatabaseLogger是一個能夠輕松記錄資料庫操作的一個新的攔截器。結合先前提到的特性,能夠無需重編譯而對一個部署好的程式接入資料操作記錄功能。

6遷移模型的變化檢測更為準确,性能也得到了提高。

7性能提升。展現在初始化期間減少資料庫操作,linq查詢null相等比較的優化,更快的視圖生成(模組化),更有效地跟蹤多個關聯實體

8NuGet上能夠找到該版本運作時。

9微軟下載下傳中心中有VS2012,2013的工具用于 Model First or Database First。

1VS2013裡添加實體模型會有多個選項

8 這算什麼狗屁新特性...

EF 6.0.2  修正了一些bug。
EF 6.0.1
EF 6

一、工具更新for VS

二、運作時

Entity Framework 6包含了以下運作時特性,它們同時适用于代碼優先和EF設計器:

01異步查詢和儲存.基于.NET4.5的異步模式

02自動連接配接恢複(Connection Resiliency).

03基于代碼的配置

04“依賴解決方案(Dependency Resolution)”.依賴項解析提供了服務定位模式支援,以及可以實作自定義替換。

05攔截/SQL日志.

06經過改進的可測試性。表現在mock或者自己寫的測試的借助下,對DbContext和DbSet的測試更為簡單

07使用已經打開的DbConnection建立DbContext

08改進的事務支援.

09在.NET 4.0中,有更好的性能,并且支援枚舉和空間資料類型

10增強了LINQ查詢中的Enumerable.Contains方法

11經過改進的視圖生成

12“可插式複數化(Pluggable Pluralization)”和“單數化服務(Singularization Service)”

13實體類Equals或GetHashCode方法的自定義實作

14DbSet.AddRange/RemoveRange.添加/移除DbSet裡的多個實體

15DbChangeTracker.HasChanges.檢視對資料庫任何挂起的更改。

16SqlCeFunctions.提供在 LINQ to Entities 查詢中,調用資料庫中函數的公共語言運作時 (CLR) 方法。

下面的運作時特性隻适用于Code First:

01自定義代碼優先約定

02支援将Code First映射到插入、更新、删除的存儲過程

03幂等遷移腳本.支援生成從任意版本更新到最新版本的sql腳本。

04可配置的遷移曆史表。

05每個資料庫有多個上下文

06DbModelBuilder.HasDefaultSchema。一個新的Code First API,允許預設的資料庫架構在一處進行配置

07DbModelBuilder.Configurations.AddFromAssembly方法。允許在以Code First Fluent API使用配置類的時候,在一個元件内定義配置類。

08自定義遷移操作

09預設事務隔離級别改為READ_COMMITTED_SNAPSHOT。用Code First建資料庫的時候更靈活,死鎖更少。

10Entity and complex types can now be nestedinside classes.(真心查不到nestedinside的意思)

 16. using System.Data.Entity.SqlServer;

其他參考連結:

http://www.infoq.com/cn/news/2013/08/entity-framework-6-rc http://www.infoq.com/cn/news/2013/06/EF6-Breaking-Changes