使用Entity Framework Core加入既有資料庫的模型

文章推薦指數: 80 %
投票人數:10人

接著在PMC (Package Manager Console) 下Scaffold-DbContext指令,將建立既有資料庫的EF Core 模型。

從選單選取「Tools」 - 「NuGet Package ... EntityFrameworkCore不像.NETFramework的EntityFramework可以透過圖形化工具產生既有資料庫的模型(DbContext),但是可透過命令來建立模型,這一篇文章就是要說明如何建立既有資料庫的EFCore模型。

啟動VisualStudio2019開發環境。

從「File」-「New」-「Project」,在「Createanewproject」對話盒中選擇ConsoleApp(.NETCore),按下「Next」: 指定專案名稱之後按下「Create」。

使用NuGetPackageManager加入「Microsoft.EntityFrameworkCore.SqlServer」、「Microsoft.EntityFrameworkCore.Tools」。

從選單選取「Tools」-「NuGetPackageManager」-「ManageNuGetPackagesforsolution」,在「Browse」頁裡分別搜尋「Microsoft.EntityFrameworkCore.SqlServer」、「Microsoft.EntityFrameworkCore.Tools」並安裝它們。

在SoltuionExplorer中可以看到安裝之後的套件。

接著在PMC(PackageManagerConsole)下Scaffold-DbContext指令,將建立既有資料庫的EFCore模型。

從選單選取「Tools」-「NuGetPackageManager」-「PackageManagerConsole」,輸入以下指令: Scaffold-DbContext"Server=.\SQLExpress;Database=Northwind;Trusted_Connection=True;"Microsoft.EntityFrameworkCore.SqlServer-OutputDirModels-TablesEmployees,Orders Scaffold-DbContext命令後面接的是資料庫連線字串「"Server=.\SQLExpress;Database=Northwind;Trusted_Connection=True;"」這將連接到本機SqlExpress伺服器裡頭的Northwind資料庫並以信任目前登入帳號登入資料庫。

後面接著的是「Microsoft.EntityFrameworkCore.SqlServer」是資料庫提供者,-OutputDir參數指定要輸出的資料夾,-Tables參數則是指定要產生模型的資料表名稱,若有多個使用逗點區隔。

執行完成在SoltuionExplorer中看到EFCore模型將被成功地建立Models資料夾。

開啟Models資料夾中的Employees.cs你將會看到以下程式: namespaceConsoleApp2.Models { publicpartialclassEmployees { publicEmployees() { InverseReportsToNavigation=newHashSet(); Orders=newHashSet(); } publicintEmployeeId{get;set;} publicstringLastName{get;set;} publicstringFirstName{get;set;} publicstringTitle{get;set;} publicstringTitleOfCourtesy{get;set;} publicDateTime?BirthDate{get;set;} publicDateTime?HireDate{get;set;} publicstringAddress{get;set;} publicstringCity{get;set;} publicstringRegion{get;set;} publicstringPostalCode{get;set;} publicstringCountry{get;set;} publicstringHomePhone{get;set;} publicstringExtension{get;set;} publicbyte[]Photo{get;set;} publicstringNotes{get;set;} publicint?ReportsTo{get;set;} publicstringPhotoPath{get;set;} publicvirtualEmployeesReportsToNavigation{get;set;} publicvirtualICollectionInverseReportsToNavigation{get;set;} publicvirtualICollectionOrders{get;set;} } } Employees類別仿照Northwind資料庫的Employees資料表成為一個Entity類別。

開啟NorthwindContext.cs檔案,內容如下: publicpartialclassNorthwindContext:DbContext { publicNorthwindContext() { } publicNorthwindContext(DbContextOptionsoptions) :base(options) { } publicvirtualDbSetEmployees{get;set;} publicvirtualDbSetOrders{get;set;} protectedoverridevoidOnConfiguring(DbContextOptionsBuilderoptionsBuilder) { if(!optionsBuilder.IsConfigured) { #warningToprotectpotentiallysensitiveinformationinyourconnectionstring,youshouldmoveitoutofsourcecode.Seehttp://go.microsoft.com/fwlink/?LinkId=723263forguidanceonstoringconnectionstrings.optionsBuilder.UseSqlServer("Server=.\\SQLExpress;Database=Northwind;Trusted_Connection=True;"); } } ~~~相關內容省略~~~ } partialvoidOnModelCreatingPartial(ModelBuildermodelBuilder); } NorthwindContext類別繼承自DbContext,並根據Scaffold-DbContext命令所傳遞的連線字串及資料表產生相對應內容。

接著可以透過NorthwindContext類別連接到資料庫,並存取資料內容。

開啟Program.cs,在Main程式區塊中建立NorthwindContext物件,使用foreach將Employees集合將資料內容列表出來,程式碼如下: staticvoidMain(string[]args) { using(vardb=newNorthwindContext()) { foreach(varempindb.Employees) { Console.WriteLine($"{emp.EmployeeId}-{emp.FirstName},{emp.LastName}-{emp.Title}"); } } } 執行結果如下: 相關學習資源 UAC193使用ASP.NETCore設計跨平台網站開發Part1-VisualC# UAC194使用ASP.NETCore設計跨平台網站開發Part2-VisualC# U2147Angular與ASP.NETCoreWebAPI開發實戰演練



請為這篇文章評分?