直接上干貨
===EFCore CodeFirst======= (Vs2019 Core3.0)
1: 安裝下面3個對應的package(在Nuget控制台或者直接NuGet包查詢點擊下載,我喜歡下面的命令,B格一些)
Install-Package Microsoft.EntityFrameworkCore
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools
2:創建實體
namespace WebApplication1.Models
{
using System.ComponentModel.DataAnnotations;
public class Person
{
[Key] //將來在數據庫對應的表中 就是主鍵
public int ID { get; set; }
[MaxLength(30), Required] //。。。
public string Name { get; set; }
public int? Age { get; set; } //可為空
public DateTime? Birthday { get; set; }
}
}
3: 覆寫下面兩個方法或其中一個方法,及新增倆個實體,並添加到這里
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace WebApplication1.Models
{
using Microsoft.EntityFrameworkCore;
public class TestDbContext:DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//base.OnConfiguring(optionsBuilder);
string sqlConnection = "server=XB-201907130929\\ZRFSQLSERVER;uid=sa;pwd=123456;database=TestDbContext";
optionsBuilder.UseSqlServer(sqlConnection);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//modelBuilder.Entity<Person>().HasIndex(u => u.Name).IsUnique(); //是否唯一,看你直接是否需要咯
}
public DbSet<Person> Person { get; set; }
public DbSet<Book> Book { get; set; }
}
}
4:控制台命令:
Add-Migration Init //其中Init是你的版本名稱 ,這個每一次修改都會要求你加上名稱
下面update-database init會同步並生成數據庫及表; init當做為版本號即可
update-database Init //再一次執行會回到這個數據庫的版本包括表的字段和數據
update-database uupdte0 會更新到這個版本,數據庫中的表都會更新到這個遷移的版本,包括數據
5:注意點
Add-Migration EditPwdLength // 修改了表或者添加了表
update-database EditPwdLength //加上版本EditPwdLength 會比較保險一些吧
===EFCore DBFirst=======
1.點擊“工具”->“NuGet包管理器”->“程序包管理器控制台”
分別安裝以下幾個包
Mysql 版本:
/*Install-Package MySql.Data.EntityFrameworkCore -Pre*/ (update 這個在core3.1的版本找那個需要去掉,否則報錯引用不明確的問題)
Install-Package Pomelo.EntityFrameworkCore.MySql
Install-Package Microsoft.EntityFrameworkCore.Tools
Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design
Sql server 版本:
Install-Package Microsoft.EntityFrameworkCore
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools
Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design
2.在程序包包管理器控制台 中執行以下語句生成 實體類
--mysql 版本:
Scaffold-DbContext "server=.;userid=tech5_kj;pwd=xxx;port=3306;database=
zrfTempDb
;sslmode=none;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -Force
或者
Scaffold-DbContext "server=**;uid=qq;pwd=xxx;port=3306;database=zrfTempDb;sslmode=none;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -UseDatabaseNames -Force
--sql server 版本
Scaffold-DbContext "Data Source=***;database=zrfTempDb;uid=qq;pwd=aoe" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force
參數說明:
-OutputDir *** 實體文件所存放的文件目錄
-ContextDir *** DbContext文件存放的目錄
-Context *** DbContext文件名
-Schemas *** 需要生成實體數據的數據表所在的模式
-Tables *** 需要生成實體數據的數據表的集合
-DataAnnotations
-UseDatabaseNames 直接使用數據庫中的表名和列名(某些版本不支持)
-Force 強制執行,重寫已經存在的實體文件
最后,如有遇到不明白的地方可以留言聯系本人!大家相互學習進步!
后續會不斷的寫些自己的小筆記,加油!!!