成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深入探索 EF Core 數據庫遷移與表生成實體

開發 前端
在實際項目中,可根據團隊開發流程靈活運用,如在新項目啟動時利用遷移創建初始架構,后期迭代持續更新;對接遺留數據庫時,先逆向生成實體再按需優化調整,充分發揮 EF Core 的強大功能。

一、引言

Entity Framework Core(EF Core)作為一款強大的對象關系映射(ORM)框架,在.NET 開發中廣泛應用于數據庫交互。其中,數據庫遷移功能允許我們以代碼優先的方式管理數據庫架構的演變,而從現有數據庫表生成實體類則為逆向工程提供了便利,大大提高開發效率。本文將詳細講解這兩個關鍵操作的具體步驟,并附上實例,幫助讀者快速上手。

二、EF Core 數據庫遷移

(一)環境搭建

首先,確保你的項目已安裝必要的 NuGet 包。對于一個.NET Core 項目,需要引入  Microsoft.EntityFrameworkCore 、 Microsoft.EntityFrameworkCore.Design 、 Microsoft.EntityFrameworkCore.SqlServer (這里以 SQL Server 為例,若使用其他數據庫,如 MySQL,則引入對應的包,如  Pomelo.EntityFrameworkCore.MySql )。

(二)創建 DbContext 類

DbContext 是 EF Core 與數據庫交互的核心類,它負責協調實體類與數據庫之間的操作。例如,創建一個名為  MyDbContext  的類:

復制

using Microsoft.EntityFrameworkCore;

public class MyDbContext : DbContext
{
    public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
    {
    }

    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }
}

這里定義了兩個  DbSet  屬性,分別對應  Blog  和  Post  實體(后續會詳細講解實體類),它們代表數據庫中的表。

(三)配置數據庫連接

在  Startup.cs (ASP.NET Core 項目)或程序入口點處,配置數據庫連接字符串并將  DbContext  注入到服務容器中:

復制

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        var connectionString = "Server=(localdb)\\mssqllocaldb;Database=MyBlogDb;Trusted_Connection=True;";
        services.AddDbContext<MyDbContext>(options =>
            options.UseSqlServer(connectionString));

        // 其他服務注冊
    }

    // 其他配置方法
}

(四)創建初始遷移

打開命令行工具,切換到項目目錄,執行以下命令:

復制

dotnet ef migrations add InitialCreate

這一步會在項目中創建一個  Migrations  文件夾,里面包含了描述數據庫初始架構的代碼文件。例如,生成的遷移文件可能包含創建  Blogs  和  Posts  表的代碼,類似:

復制

public partial class InitialCreate : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.CreateTable(
            name: "Blogs",
            columns: table => new
            {
                BlogId = table.Column<int>(nullable: false)
                   .Annotation("SqlServer:Identity", "1, 1"),
                Url = table.Column<string>(nullable: true)
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_Blogs", x => x.BlogId);
            });

        migrationBuilder.CreateTable(
            name: "Posts",
            columns: table => new
            {
                PostId = table.Column<int>(nullable: false)
                   .Annotation("SqlServer:Identity", "1, 1"),
                Title = table.Column<string>(nullable: true),
                Content = table.Column<string>(nullable: true),
                BlogId = table.Column<int>(nullable: false)
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_Posts", x => x.PostId);
                table.ForeignKey(
                    name: "FK_Posts_Blogs_BlogId",
                    column: x => x.BlogId,
                    principalTable: "Blogs",
                    principalColumn: "BlogId",
                    onDelete: ReferentialAction.Cascade);
            });
    }

    protected override void Down(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.DropTable(
            name: "Posts");
        migrationBuilder.DropTable(
            name: "Blogs");
    }
}

 Up  方法定義了如何將數據庫遷移到新版本,即創建表; Down  方法則用于回滾遷移,刪除相應表。

(五)應用遷移到數據庫

執行以下命令將遷移應用到數據庫:

復制

dotnet ef database update

此時,數據庫中會創建  Blogs  和  Posts  表,架構與遷移文件中定義一致。

三、從數據庫表生成實體

(一)安裝反向工程工具

EF Core 提供了反向工程工具,同樣需要通過 NuGet 安裝。執行命令:

復制

dotnet tool install --global dotnet-ef

確保工具安裝成功。

(二)生成實體類

在命令行中,執行以下命令:

復制

dotnet ef dbcontext scaffold "Server=(localdb)\\mssqllocaldb;Database=MyBlogDb;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models

這里的連接字符串指向要逆向工程的數據庫, Microsoft.EntityFrameworkCore.SqlServer  表明數據庫類型, -o Models  指定生成的實體類文件輸出到  Models  文件夾。

生成的實體類會自動包含對應表的屬性,例如  Blog  實體可能如下:

復制

public partial class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
    public ICollection<Post> Posts { get; set; }
}
 
 
 Post  實體也會有相應屬性,并且會自動配置與  Blog  的關聯關系,類似:
 
public partial class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
    public int BlogId { get; set; }
    public virtual Blog Blog { get; set; }
}

四、總結

通過 EF Core 的數據庫遷移功能,我們能以優雅的代碼方式管理數據庫架構變化,適應項目迭代需求。而從數據庫表生成實體的逆向工程操作,則為對接已有數據庫、快速構建數據訪問層提供了高效途徑。掌握這兩項技術,能讓.NET 開發者在數據庫驅動的應用開發中如虎添翼,提升開發效率與代碼質量,輕松應對復雜的數據持久化場景。

在實際項目中,可根據團隊開發流程靈活運用,如在新項目啟動時利用遷移創建初始架構,后期迭代持續更新;對接遺留數據庫時,先逆向生成實體再按需優化調整,充分發揮 EF Core 的強大功能。

責任編輯:武曉燕 來源: 程序員編程日記
相關推薦

2013-09-08 22:12:02

EF Code Fir數據遷移MVC架構設計

2016-08-23 13:35:22

MVCEFNuGet

2017-06-12 18:24:25

數據庫壓縮技術

2012-09-10 10:23:38

Entity Fram

2021-03-17 00:05:50

分布式事務提交

2025-02-10 09:10:32

2025-01-10 00:32:48

2011-09-23 09:09:38

數據庫遷移

2020-08-13 07:42:15

數據庫Flyway代碼

2010-08-04 16:18:48

DB2數據庫

2018-06-21 10:05:07

數據庫管理SQL解析MySQL

2022-06-30 10:56:18

字節云數據庫存儲

2009-07-16 09:48:29

數據庫連接

2022-04-19 09:53:06

云數據庫云計算數據庫

2025-01-22 08:19:34

2024-06-06 16:50:15

2024-11-25 06:30:00

2023-02-01 13:22:00

數據庫表連接SQL

2017-06-22 16:00:07

數據庫NoSQL遷移實踐

2009-03-19 09:44:07

SQL Server數據庫遷移數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩在线免费 | 国产精品自产拍 | 粉嫩粉嫩芽的虎白女18在线视频 | 久久精品免费一区二区三 | 美美女高清毛片视频免费观看 | 国产视频二区在线观看 | 欧美亚州综合 | 欧美视频在线观看 | 亚洲精品久久久久中文字幕二区 | av手机免费在线观看 | 99中文字幕| 国产一区二区小视频 | 午夜在线免费观看 | 一区二区三区视频播放 | 精品区一区二区 | 老外几下就让我高潮了 | 黄色大片在线视频 | 亚洲系列第一页 | 国产视频中文字幕 | 久国产精品 | 97人澡人人添人人爽欧美 | 亚洲人成人一区二区在线观看 | 中文字幕亚洲欧美日韩在线不卡 | 亚洲精品天堂 | 午夜久久久| 91看片网 | 日韩一区二区福利 | 久久久久久久国产精品影院 | 一区免费 | 亚洲一区日韩 | 日韩电影一区二区三区 | 一级黄色片一级黄色片 | 中文字幕视频在线观看 | 99久久精品一区二区成人 | 91精品国产综合久久国产大片 | 亚洲成人国产综合 | 国产一级电影在线观看 | 成人国产一区二区三区精品麻豆 | 免费黄色日本 | 国产精品毛片久久久久久 | 国产高清久久久 |