近日,微軟發布Entity Framework Core 2.0終極版以及.NET Core 2.0和ASP.NET Core 2.0。Entity Framework (EF) Core是輕量級跨平臺的Entity Framework版本,也是.NET的對象或關系映射框架。
EF Core此次的最新主要包括更高效、強大的LINQ實現、簡化的提供程序模型及其使用的DI。EF Core此次的更新主要是針對最新.NET Standard 2.0。
對LINQ的優化從處理子查詢開始,優化后這些子查詢不再需要嵌套。而且當請求很少時,LINQ也不再將所有列作為檢索對象。
EF.Functions屬性也被添加進EF Core,EF.Functions屬性可以用于將運算符映射到數據庫函數或運算符中,然后在LINQ查詢中調用。這個版本還是添加了Like()運算符,因此在查詢中可使用EF.Functions.Like(),需要時Like()會被轉化成SQL中LIKE形式或者在內存中進行評估。
全局查詢過濾器是本次優化的另一個看點,用戶可在模型中指定在DbContext中執行的所有查詢的實體,但一直被EF Core用戶呼聲很高的優化點卻仍然“缺席”——SQL生成仍不支持GROUP BY。對此微軟做出回應:EF Core 2.1版本中會添加該功能。
另外一個“缺席”的是優化點是對復雜類型的支持。Entity Framework中的復雜類型可用但依賴于所有類型或子類型。所有實體或子實體可以被定義,這些實體可將其他實體中的屬性分組,這與EF6中使用的復雜類型非常相似,唯一不同的是它具有包含參考導航屬性的能力。
由于Entity Framework Core 2.0中使用不同的語法,所以將EF模型從其他版本引入EF核心變得更加困難。
用戶的另一個失望點是核心SQL概念即存儲過程的缺席。存儲過程在服務器上執行比將所有數據傳輸到應用程序進行處理具有更高的效率,但是在2.0版本中卻沒有這個功能。
其他尚未添加的功能還包括空間類型、延遲加載的支持。這些在完整的Entity Framework版本中應該看到的功能可能只能寄希望于EF Core 2.1版本了。