日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

EF Core 2.0使用MsSql/Mysql实现DB First和Code First

發布時間:2023/12/4 数据库 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EF Core 2.0使用MsSql/Mysql实现DB First和Code First 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

環境

Visual Studio 2017?

最新版本的.NET Core 2.0 SDK

最新版本的 Windows PowerShell

開始搭建

1、在 Visual Studio 2017 中創建新項目

  • “文件”>“新建”>“項目”

  • 從左側菜單中選擇“已安裝”>“模板”>“Visual C#”>“.NET Core”。

  • 選擇“ASP.NET Core Web 應用程序”。

  • 輸入“EFGetStarted.AspNetCore.NewDb”作為名稱,然后單擊“確定”。

  • 在“新建 ASP.NET Core Web 應用程序”對話框中:

    • 確保在下拉列表中選擇“.NET Core”和“ASP.NET Core 2.0”選項

    • 選擇“Web 應用程序(模型視圖控制器)”項目模板

    • 確保將“身份驗證”設置為“無身份驗證”

    • 單擊“確定”

2、安裝 Entity Framework Core

  • 工具”>“NuGet 包管理器”>“包管理器控制臺”

1.1、安裝數據庫提供程序

MsSql

運行:Install-Package Microsoft.EntityFrameworkCore.SqlServer

MySql

運行:柚子:Install-Package Pomelo.EntityFrameworkCore.MySql
或者
官方:Install-Package MySql.Data.EntityFrameworkCore -Version 8.0.11

1.2、安裝程序包管理器控制臺
運行:Install-Package Microsoft.EntityFrameworkCore.Tools

1.3、安裝設計包
運行:Install-Package Microsoft.EntityFrameworkCore.Design

數據據庫提供程序設計包 (EF Core 2.0 不再需要)
MsSql

運行:Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design
MySql

運行:Install-Package Pomelo.EntityFrameworkCore.MySql.Design

DB First——從現有數據庫創建模型

MySql

運行:Scaffold-DbContext -Connection "Server=localhost;User Id=root;Password=123456;Database=vanfj" -Provider "Pomelo.EntityFrameworkCore.MySql" -OutputDir "Models"

MsSql

運行:Scaffold-DbContext -Connection "Server=localhost;User Id=root;Password=123456;Database=vanfj" -Provider "Microsoft.EntityFrameworkCore.SqlServer" -OutputDir "Models"

使用說明:將Connection中的連接字符串替換為自己的數據庫連接,將OutputDir中的Models替換為自己要生成的文件目錄名

Code First——從模型生成到數據庫

1、創建模型

1.1、創建上下文

public class SchoolContext : DbContext

{

public SchoolContext(DbContextOptions<SchoolContext> options) : base(options)

{

}


public DbSet<Course> Courses { get; set; }

public DbSet<Enrollment> Enrollments { get; set; }

public DbSet<Student> Students { get; set; }


protected override void OnModelCreating(ModelBuilder modelBuilder)

{

modelBuilder.Entity<Course>().ToTable("Course");

modelBuilder.Entity<Enrollment>().ToTable("Enrollment");

modelBuilder.Entity<Student>().ToTable("Student");

}

}

public class Student

{

public int ID { get; set; }

public string LastName { get; set; }

public string FirstMidName { get; set; }

public DateTime EnrollmentDate { get; set; }


public ICollection<Enrollment> Enrollments { get; set; }

}

public enum Grade? ??

{

A, B, C, D, F

}


public class Enrollment

{

public int EnrollmentID { get; set; }

public int CourseID { get; set; }

public int StudentID { get; set; }

public Grade? Grade { get; set; }


public Course Course { get; set; }

public Student Student { get; set; }

}

{

A, B, C, D, F

}


public class Enrollment

{

public int EnrollmentID { get; set; }

public int CourseID { get; set; }

public int StudentID { get; set; }

public Grade? Grade { get; set; }


public Course Course { get; set; }

public Student Student { get; set; }

}

public class Course

{

[DatabaseGenerated(DatabaseGeneratedOption.None)]

public int CourseID { get; set; }

public string Title { get; set; }

public int Credits { get; set; }


public ICollection<Enrollment> Enrollments { get; set; }

}

1.2、Startup文件注入上下文

EF Core在版本 2.0 中,引入了一種在依賴關系注入中注冊自定義 DbContext 類型的新方法,即以透明形式引入可重用 DbContext 實例的池。?
要使用 DbContext 池,請在服務注冊期間使用 AddDbContextPool 而不是 AddDbContext

public void ConfigureServices(IServiceCollection services)

{

services.AddDbContextPool<SchoolContext>(options =>

options.UseMySql(Configuration.GetConnectionString("DefaultConnection")));


services.AddMvc().AddJsonOptions(options =>

options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);

}

1.3、appsettings.json文件添加連接字符串

{

"ConnectionStrings": {

"DefaultConnection": "Server=localhost;User Id=root;Password=123456;Database=vanfj"

},

"Logging": {

"IncludeScopes": false,

"LogLevel": {

"Default": "Warning"

}

}

}


2、執行NuGet命令,創建數據庫

2.1、為遷移搭建基架

運行:Add-Migration InitialCreate

2.2、將新遷移應用到數據庫

運行:Update-Database

EF Core 2.0 NuGet命令

Get-Help about_EntityFrameworkCore 獲取EF Core命令幫助

添加一個遷移數據庫 遷移的名稱 目錄(及其子命名空間)路徑是相對于項目目錄。 默認值為"Migrations"。
Add-Migration -Name <String> -OutputDir <String>
Add-Migration InitialCreate 第一次執行初始化用這個

刪除上次的遷移數據庫 不檢查以查看遷移是否已應用到數據庫。
Remove-Migration -Force

目標遷移。 如果為"0",將恢復所有遷移。 默認到最后一個遷移。
Update-Database?
Update-Database LastGoodMigration 還原遷移

刪除數據庫 顯示的數據庫會被丟棄,但沒有刪除它
Drop-Database -WhatIf

Get-DbContext 獲取有關 DbContext 類型的信息

從數據庫更新DbContext和實體的類型
Scaffold-DbContext?
-Connection <String> 數據庫的連接字符串。
-Provider <String> 要使用的提供程序。 (例如 Microsoft.EntityFrameworkCore.SqlServer)
-OutputDir <String > 要將文件放入的目錄。 路徑是相對于項目目錄。
--Context <String > 若要生成的 dbcontext 名稱。
-Schemas <String[]> 要生成實體類型的表架構。
-Tables <String[]> 要生成實體類型的表。
-DataAnnotations 使用屬性來配置該模型 (如果可能)。 如果省略,則使用僅 fluent API。
-UseDatabaseNames 使用直接從數據庫表和列名稱。
-Force 覆蓋現有文件。

從遷移中生成的 SQL 腳本
Script-Migration
-From <String> 開始遷移。 默認值為 0 (初始數據庫)
-To <String> 結束的遷移。 默認到最后一個遷移
-Idempotent 生成可以在任何遷移的數據庫使用的腳本
-Output <String> 要將結果寫入的文件

原文地址:https://www.cnblogs.com/lwc1st/p/8966347.html?


.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的EF Core 2.0使用MsSql/Mysql实现DB First和Code First的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。