時間:2017-05-31 來源:互聯網 瀏覽量:
5月初,.NET團隊發布了一個Core 2.0實體框架的預覽版本,這是EF對於.NET Core和.NET Framework的輕量級、可擴展和跨平台的版本。
5月23日,Entity Framework runtime和相應的Visual Studio工具的6.2 beta版本已經可用了。EF 6.2是Microsoft更傳統的對象/.NET Framework關係映射器的新迭代。
將應用程序升級到EF 6.2 beta 1 runtime通常情況下,NuGet會提供EF 6 runtime的預發行版本。在Visual Studio中,可以通過“Manage NuGet Packages”窗口(確保“Include prerelease”選項被選中)或“Package Manager Console”中的NuGet命令,實現應用程序中EF軟件包的安裝或更新。
例如,更新現有項目中的beta包:
PM> Update-Package EntityFramework -Version 6.2.0-beta1 -Pre
在新項目中安裝beta包:
PM> Install-Package EntityFramework -Version 6.2.0-beta1 -Pre
升級Visual Studio中的EF工具用戶可以從Microsoft下載中心獲取安裝程序。隻需要下載並安裝與正在使用的Visual Studio版本對應的文件即可。
目前支持Visual Studio 2012、2013和2015。請注意,目前並沒有為Visual Studio 2017提供測試版的EF工具。因為Visual Studio2017需要使用不同的機製來將更新分發給EF工具這樣的組件,.NET團隊計劃稍後提供更新日期。
EF工具的大部分代碼是跨Visual Studio版本共享的,因此任何版本的測試都有助於驗證beta版的質量。
如果用戶隻安裝了Visual Studio 2017,仍然可以將應用程序升級到使用6.2 Beta 1版本的EF runtime,同時繼續使用Visual Studio中包含的EF工具。
降低Visual Studio中的EF工具當用戶安裝此測試版時,它會替換掉Visual Studio中包含的工具或安裝的任何先前版本。如果用戶在使用此測試版過程中,遇到任何問題, Visual Studio附帶的工具可以將工具還原到之前的版本。可以按照以下步驟進行操作:
使用“添加/刪除程序”,卸載Visual Studio的實體框架工具
修複Visual Studio安裝
EF 6.2 beta 1中有什麼新功能?雖然EF團隊的重點工作是為EF Core增加新功能和改進,但是也計劃繼續修複一些重要bug,實施小型改進,並接受社區對EF 6代碼庫的貢獻。
社區的開源貢獻者為EF 6.2 beta 1版本的許多提升做出的巨大貢獻,在此表示感謝。此版本的完整列表(包括即將推出的PowerTools版本中的錯誤修複)可在GitHub query中找到。
新功能中值得一提的有以下幾點:
通過從永久緩存#275中加載第一個模型的完成代碼來減少啟動時間
可以通過將以下代碼加入到應用中來實現該功能:
提供程序報告無效鍵時EF工具更新模型的問題#243
在某些數據庫逆向工程場景中,某些提供程序可能會錯誤地指示主鍵列為空。EF工具不再將其報告為錯誤,而是會忽略不正確的可空性。
添加DbFunctions.Like(),使得可以在SQL 中編寫轉換為LIKE的LINQ查詢#241
用法如下:
Migrate.exe支持support -script選項#240
啟用使用命令行工具生成用於遷移的SQL腳本。
使用參數過多時,從數據庫更新大型模型可能導致sp_executesql失敗#185
這是與SQL Server大數據模型配合使用的長期問題。有關詳細信息,請參閱“Call to action for provider writers”。
EF6不能與序列主鍵一起使用#165
現在可以采用與序列兼容的機製,在runtime使用標誌來更改EF檢索插入SQL Serer的生成值:
更新SQL Azure執行策略錯誤號#83
將額外的錯誤納入到臨時性錯誤列表,以便能夠根據客戶反饋和Azure SQL數據庫上的新數據進行恢複。
使用“The SqlParameter is already contained by another SqlParameterCollection”命令重試查詢或SQL命令失敗#81
在使用重試執行策略時,該問題會影響多個API。
調試器中DbQuery.ToString()的評估經常會超時#73
根據Debugger團隊的建議,.NET團隊添加了一個新的Sql屬性,以便在諸如Autos,Locals或Watch之類的調試窗口中LINQ查詢被檢查時使用。仍然可以使用`ToString()方法來獲取SQL,但調試器已經不會使用了。
為provider提供Call to action.NET團隊懷疑一些現有的EF provider可能會受到此版本中工具包含的修複的不利影響,因此請求provider的幫助來驗證這一假設。
該修複程序解決了EF工具的“Update model from database”功能中使用模式發現查詢長期存在的問題。對具有大量對象的數據庫使用該功能時,模式發現查詢可能會包含大量參數。特別是SQL Server對每個查詢的參數限製為2100,生成查詢和參數的方式可能導致任何超過300個對象的模型失敗。GitHub問題更詳細地描述了此問題:使用過多參數,從數據庫更新大型模型可能導致sp_executesql失敗#185。
有哪些改變@bengutt基於原有的想法並實現了這個修複程序,通過對每一個不同值使用重複利用參數對象,實現了模式發現查詢所需參數的顯著減少了。
該修複程序是在跨provider和所有當前和以前的EF版本中,使用共享代碼實現的,這也可能會使非SQL Server的provider獲益。因此希望盡可能多的provider使用此新版本。但是,如果對某些provider是破壞性的改變,那麼將終止將SQL Server視作特殊案例的情況。
provider會受到什麼影響任何利用EF查詢功能來實現模式發現的provider都會受到影響。例如通過在數據庫模式中提供自己的SSDL和MSL模型文件,隻能受益於或不受參數數量的減少的影響。
然而,一些provider通過模式發現查詢中的模式匹配來實現模式發現,然後將這些模式轉化成原生模式發現API的調用。這樣的提供者需要實現一些邏輯來將查詢參數與查詢中的過濾器相匹配。根據後一個實現方式的不同,如果參數的數量或順序會隨著修複程序改變,則可能會中斷此參數。
如果你的provider因為修複而損壞,請報告如果你的provider已損壞,請在Call to action for provider writers: test compatibility with schema discovery queries in EF Tools 6.2地GitHub問題下留言。#195
beta 1之後是什麼?.NET團隊計劃短期內在EF 6方麵做下幾件事情:
正在考慮使用Visual Studio 2017的兼容性來發布一個EF 6 PowerTools的更新。
一旦.NET團隊收到並分析了beta版本的反饋,將決定是否需要發布另外一個預覽版本,還是設定好6.2版本的最終發布日期。
如前所述,.NET團隊將在後續發布Visual Studio 2017的EF 6.2工具。
目前已有很多產品支持EF,其中值得一提的是ComponentOne,ComponentOne基於EF6的版本能夠幫助用戶充分發掘EF6的潛力並使其在WinForms應用中更加易用。
關於葡萄城葡萄城是全球最大的控件提供商,世界領先的企業應用定製工具、企業報表和商業智能解決方案提供商,為超過75%的全球財富500強企業提供服務。
轉載請注明出自:葡萄城控件