![C#教學 - EntityFramework Core - Database First及CURD 2 24](https://jprogramstudy.com/wp-content/uploads/2022/09/24-1024x576.png)
EntityFramework Core – EntityFramework Core就是一個用Code/Database自動產生Database/Code的FRAMEWORK.
EF的兩種方法
- Code First: Code First就是以C# project中的Class來產生Database的Datatable.
- Database First: 與Code First相反,程式員先設立Database的Datatable再用EF在C# project中產生Class. 另外, 在Respoitory中以LINQ實作CURD等功能.
而EntityFramework 加上LINQ的使用, 令程序員減少了大量重覆的工作. 不像ADO.net般要大量的CODING.
以下會介紹Database First及CURD, 現在就開始了, Let’s Code!
建立Database First的基本流程 (Database中巳有DataTable): |
Step 1: 在 Package Manager Console (PMC)中, 輸入以下CMD來加入 NuGet packages: |
Install-Package Microsoft.EntityFrameworkCore.Tools; |
Step 2: 在CMD中, 加入Scaffold-DbContext Command |
Scaffold-DbContext “DefaultConnection”: “Server=.\SQLExpress;Database=SchoolDB;Trusted_Connection=True;” Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models |
或者在CMD中, 用DotNet CLI |
Dotnet ef dbcontext scaffold "Server=.\SQLEXPRESS;Database=SchoolDB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models |
CURD的實作:
Create |
try { if (ModelState.IsValid) { _context.students.Add(student); await _context.SaveChangesAsync(); } } catch (DbUpdateException ex) { //Unable to save changes } |
Edit |
var studentToUpdate = await _context.students.FirstOrDefaultAsync(s => s.ID == id); if (await TryUpdateModelAsync<Student>( studentToUpdate, “”, s => s.FirstMidName, s => s.LastName, s => s.EnrollmentDate)) { try { await _context.SaveChangesAsync(); } catch (DbUpdateException ex) { //”Unable to save changes. “; } } } |
Delete |
var student = await _context.Students.AsNoTracking().FirstOrDefaultAsync(m => m.ID == id); _context.students.Remove(student); _context.SaveChanges(); |