EFCore中兩種First的使用
阿新 • • 發佈:2021-07-02
首先說一下(DbFirst)資料庫先行,
1.建好專案後通過 NuGet 安裝所需依賴性:
(1)Microsoft.EntityFrameworkCore (2)Microsoft.EntityFrameworkCore.Design (3)Microsoft.EntityFrameworkCore.SqlServer (4)Microsoft.EntityFrameworkCore.SqlServer.Design (5)Microsoft.EntityFrameworkCore.Tools
可以右鍵專案通過管理NuGet程式包的方式安裝,也可以通過命令安裝(找到VS工具欄 ---> NuGet 包管理器 ---> 程式包管理控制檯):
注意選擇預設專案
Install-package Microsoft.EntityFrameworkCore Install-package Microsoft.EntityFrameworkCore.Tools Install-package Microsoft.EntityFrameworkCore.Design Install-package Microsoft.EntityFrameworkCore.SqlServer Install-package Microsoft.EntityFrameworkCore.SqlServer.Design
然後繼續在程式包管理控制檯再輸入:
Scaffold-DbContext -Connection "Server=.;Database=EFCoreDemo;uid=sa;pwd=123" Microsoft.EntityFrameworkCore.SqlServer -OutputDir "Models"
-OutputDir "Models" 可以不寫,如果加上了則會在專案中新增models資料夾,生成的context和實體類都放到models資料夾中
下面使用的是Code First
首先建好專案,安裝依賴包
Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCore
編寫Studnet和Classinfo實體類
context上下文類需要繼承DbContext
public class CodeFirstContext : DbContext { public CodeFirstContext() { } public CodeFirstContext(DbContextOptions options) : base(options) { } public DbSet<Student> Student { get; set; } public DbSet<ClassInfo> ClassInfo { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlServer("Server=.;Database=EFCoreCodeFirst;uid=sa;pwd=123"); } } protected override void OnModelCreating(ModelBuilder modelBuilder) { } }
基本上跟Ef6差不多的,寫好之後測試一下就OK了:
using (CodeFirstContext db = new CodeFirstContext()) { db.Database.EnsureCreated(); //如果資料庫不存在則建立,存在則不管 db.Add(new ClassInfo { ClassName = "三班" }); var result = db.SaveChangesAsync().Result; Console.WriteLine(result > 0 ? "成功加入" : "失敗add"); }