關於對Entity Framework Core3.1的理解與總結
Entity Framework Core 是一個ORM,所謂ORM也是ef的一個框架之一吧,簡單的說就是把C#一個類,對映到資料庫的一個表,把類裡面的屬性對映到表中的欄位。然後Entity Framework Core3.1 是一個長期支援的版本。本人非常樂意對.NET社群繁榮奉獻自己的青春。希望國內以後能夠有越來越多的.NET程式設計師。
建立了一個.NET Standard類庫。
可以編輯檔案檢視netStandard版本號,我這裡是一個2.0版本。
順便簡單的說一下netStandard吧,實際上它應該就是一個開源庫,不管是.NET Core還是EntityFramework都可以引用它。就是一個底層類庫,並且該類庫可以在不同的平臺執行,ios、mac、linux等。一處編寫多處執行,而且它還是開源的。當然這裡你可以把它改成2.1的版本。
右鍵專案屬性
這樣就該好了。。。
然後又建立了一個類庫,操作和上面一樣,另一個是建立一個控制檯應用,這個控制檯應用是.NET Core應用的,版本應該是netcoreapp3.1,可以看看
以上準備工作完成後,就開始進行第一步操作,生成資料庫!
在Demo.Main類庫中建立所需要的類
這裡我就簡單的舉個栗子。一個聯賽類,一個是俱樂部類,一個是球員類,分別是一對多的關係。
namespace Demo.Main { /// <summary> /// 聯賽 /// </summary> public class League { public int Id { get; set; } public string Name { get; set; } public string Country { get; set; } } }
using System; using System.Collections.Generic; namespace Demo.Main { /// <summary> /// 俱樂部 /// </summary> public class Club { public Club() { Players=new List<Player>();//以防出現空指標引用 } public int Id { get; set; } public string Name { get; set; } public string City { get; set; } /// <summary> /// 俱樂部成立日期 /// </summary> public DateTime Establishment { get; set; } public string History { get; set; } /// <summary> /// 聯賽導航屬性 /// </summary> public League League { get; set; } /// <summary> /// 一對多,一個俱樂部有多個球員 /// </summary> public List<Player> Players { get; set; } } }
using System; namespace Demo.Main { /// <summary> /// 球員 /// </summary> public class Player { public int Id { get; set; } public string Name { get; set; } /// <summary> /// 球員出生日期 /// </summary> public DateTime DateOfBirth { get; set; } } }
然後就是在Data中引用Main的專案庫
對Data類庫安裝對資料庫操作的相關依賴,也就是方便對Model對映到資料庫。顯而易見,Data類庫就是操作對Model對映到資料的Code first資料庫遷移操作的。
所以必然是少不了上下文類的編寫和操作了。
接下來就是準備遷移操作了,但是對於Demo.Data類庫來說它是一個底層的類庫,所以我們就得通過Demo.App一個控制檯應用來去生成資料庫,然後就要通過NuGet包進行一個引用了。
需要對資料庫操作進行可執行檔案的操作需要引用一下依賴吧可以說是
這個就裝在Demo.Data專案中
這裡就可以看到它為什麼對資料庫遷移起到作用了
點選下載即可,而後才能執行資料庫遷移操作
記得在遷移時一定要選擇上下文存在的類的專案也就是Data
然後就是用命令來操作包管理工具了,來具體總結一下吧!
你可以通過給的提示輸入命令也就是get-help NuGet檢視具體的一些幫助命令
主要命令應該就是這些,具體解釋可以再去看看
或者輸入get-help entityframework,結果如下,我們用到的就是Add-Migration(新增遷移)、Update-Database(更新資料庫)這兩個應該就是比較常用的了。
輸入第一個命令 Add-Migration 這裡需要給個引數(實際上有很多引數)這個引數就是會在生成的時間戳後面定義的Name