重識EF
EF Core 學習資料:https://docs.microsoft.com/zh-cn/ef/core/dbcontext-configuration/
本為作為EF Core學習的開始,只是簡單聊下EF Core,以及一些開發上的問題
這裡重點描述幾個重點:
1.EF Core 是 .Net 再跨平臺趨勢下的新的ORM框架,也必然是趨勢;(並非EF不能用了)
2.EF Core 3.1 通過使用 .NET Standard 2.0 在 .NET Core 和 .NET Framework 上執行。 但 EF Core 5.0 不會在 .NET Framework 上執行
3.Entity Framework 6 (EF6) 是專為 .NET Framework 設計的物件關係對映器,但支援 .NET Core。 EF6 是一款受支援的穩定產品,但我們不再對其進行積極開發
然後其他的就是功能特徵上的具體差異,可以參考上述連線中地址具體來檢視(https://docs.microsoft.com/zh-cn/ef/efcore-and-ef6/);
現在業務系統中基本都在使用ORM框架,為什麼要使用EF Core?
1.可以一定程度上節省生產力,不必從 ADO.NET 從頭開始
現在回想起來,確實發展好快,剛開始都是自己完全手寫,從DbConnection,DbCommand,DataAdapter等。
還記得那常用的五個物件嗎??
歡迎大家一起來懷舊,覺得程式碼敲著敲著時間就過去了。。。
2.更好的多資料庫支援
如果業務要切換資料庫,那有ORM框架的一定相對來說會輕鬆點,否則底層全部SQL會改死人,要麼系統中原來就做好了相容,準備了多套SQL,這個代價我覺得比用ORM要大得多了
公司的業務系統也面臨切換資料庫的考驗,後面也會和大家來交流這方面內容
3.更加註重業務領域的搭建,不必太過關注資料庫
這個ABP框架也是類似的思想(ABP是我另外一個系列的內容,可以去看看)
一、來看下EF以及EF Core受支援的應用以及環境:
可以看到,EF Core 可以執行於多個框架之上,包括Net Core,Net Framework,UWP(Universal Windows Platform Windows通用應用平臺)等;通過依託於Net Core,就可以實現跨平臺了,當然還是上面提到的 EF Core 5.0 不會再 .Net Framework上面執行,這點大家要清楚哦
二、EF的開發方式:
序號 | 型別 | EF Core | EF |
---|---|---|---|
1 | DB First | 支援 | 支援 |
2 | Code First | 支援 | 支援 |
3 | Model First | 不支援 | 支援 |
重點說明:EF Core不支援Model First,其實Model Frist我基本沒怎麼使用,只是當初學習的時候接觸過,後面基本沒怎麼使用。。。
三、EF Core支援的資料庫型別:
目前支援的資料庫?? ..... 當然不是,這個基本是支援的版本,如果要檢視目前版本支援的資料,請檢視連線 https://docs.microsoft.com/zh-cn/ef/core/providers/?tabs=dotnet-core-cli;
題外話,記得Core剛開始的時候,我們當時有個業務系統是Oracle的,但是整體遷移到Core之後發現竟然沒有Oracle的連線程式,當時有SqlServer.ManagedDataAccess等,就是沒有 Oracle 的支援,所以但是自己寫了一個,可以在 Nuget上下載使用 'Citms.Oracle.ManagedDataAccess',還是有幾千個下載量,說明微軟還是太慢了,開始竟然不支援Oracle ..... 你們有遇到哪些坑 .....
如果大家想要釋出一個自己的Nuget包,請參考我其他系列文章哦,來分享自己好用的包
目前Core對資料訪問的支援還是不錯的,所以很多公司的業務也都開始往Core遷移,針對遷移類的業務,Ef Core也有相關的資料指引;
https://docs.microsoft.com/zh-cn/ef/efcore-and-ef6/porting/
針對原來EF中Model First,以及Code First的方式進行了闡述說明,來指引進行程式碼業務的移植;還是蠻貼心的 ? ....
最近公司的系統升級重構,也是會涉及到老系統的遷移,也是老大難的問題,希望後面能在這方面來點突破,不扯遠了 ....
今天是EF Core系列的開始,後續會開始分享交流具體的使用,希望大家一起來參與O