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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EFCore 的 DbFirst 模式

發(fā)布時間:2024/3/24 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EFCore 的 DbFirst 模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

🚀 優(yōu)質(zhì)資源分享 🚀

學(xué)習(xí)路線指引(點擊解鎖)知識定位人群定位
🧡 Python實戰(zhàn)微信訂餐小程序 🧡進(jìn)階級本課程是python flask+微信小程序的完美結(jié)合,從項目搭建到騰訊云部署上線,打造一個全棧訂餐系統(tǒng)。
💛Python量化交易實戰(zhàn)💛入門級手把手帶你打造一個易擴(kuò)展、更安全、效率更高的量化交易系統(tǒng)

1 前言

EF6 時代,可以通過界面操作,添加數(shù)據(jù)庫實體。

EF Core 需要通過 CLI 來進(jìn)行該操作,具體請參考EF Core官方文檔:反向工程。

2 前置條件

  • PMC 工具(僅限 Visual Studio)或 CLI 工具。
  • 核心 NuGet 包:Microsoft.EntityFrameworkCore.Design
  • 還需要為要進(jìn)行反向工程的數(shù)據(jù)庫架構(gòu)安裝適當(dāng)?shù)臄?shù)據(jù)庫提供程序

3 主命令

dotnet ef dbcontext scaffold "[數(shù)據(jù)庫連接串]" [提供程序]

如:

dotnet ef dbcontext scaffold "server=localhost;database=efcore;uid=sa;pwd=Qwe123456;" Microsoft.EntityFrameworkCore.SqlServer

4 命令參數(shù)

4.1 生成指定表(–table)

上述命令,會生成整個數(shù)據(jù)庫的表,如果需要指定特定的表,需要使用如下:

dotnet ef dbcontext scaffold "[數(shù)據(jù)庫連接串]" [提供程序] --table table_name1 --table table_name2

4.2 保留數(shù)據(jù)庫名稱(–use-database-names)

默認(rèn)情況會修正表/列名,使用該參數(shù)盡量保留原名稱。

-UseDatabaseNames #PMC --use-database-names #.NET Core CLI

4.3 Fluent API 和數(shù)據(jù)注釋(–data-annotations)

默認(rèn)情況下,使用 Fluent API 配置實體類型。使用下面的命令,可以改為使用數(shù)據(jù)注釋。

-DataAnnotations #PMC --data-annotations #.NET Core CLI

Fluent API

entity.Property(e => e.Title).IsRequired().HasMaxLength(160);

數(shù)據(jù)注釋

[Required] [StringLength(160)] public string Title { get; set; }

4.4 指定 DbContext 名稱(–context)

指定將生成的 DbContext 類的名稱

-Context #PMC --context #.NET Core CLI

4.5 指定保存目錄(–context-dir 和 --output-dir)

-ContextDir Data -OutputDir Models #PMC --context-dir Data --output-dir Models #.NET Core CLI

4.6 指定命名空間(–namespace 和 --context-namespace)

-Namespace Your.Namespace -ContextNamespace Your.DbContext.Namespace #PMC --namespace Your.Namespace --context-namespace Your.DbContext.Namespace #.NET Core CLI

5 測試

5.1 數(shù)據(jù)庫準(zhǔn)備

由于是 DbFirst,所以這里我們先創(chuàng)建一個數(shù)據(jù)庫,名為 efcore

新建一張表 Test

CREATE TABLE [dbo].[Test]([Id] [uniqueidentifier] NOT NULL,[Name] [nvarchar](128) NULL,CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED ([Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]

5.2 新建一個控制臺程序

這里命名為:DbFirstTest

mkdir DbFirstTest & cd DbFirstTest #新建文件夾DbFirstTest并切換至該目錄下 dotnet new console -f net6.0 #新建.NET6.0控制臺程序

5.3 引入 Nuget 包

# 引入 EF Core 核心包 dotnet add package Microsoft.EntityFrameworkCore.Design -v 6.0.4 # 引入 SQL Server 提供程序 dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 6.0.4

5.4 執(zhí)行 Scaffold 命令

在控制臺程序的根目錄下,執(zhí)行命令(連接串請自行修改成自己的):

dotnet ef dbcontext scaffold "server=localhost;database=efcore;uid=sa;pwd=Qwe123456;" Microsoft.EntityFrameworkCore.SqlServer --data-annotations --context EfCoreContext --context-dir Data --output-dir Models

–data-annotations:數(shù)據(jù)注釋在實體上

–context EfCoreContext:上下文指定命名為 EfCoreContext

–context-dir Data:上下文保存在根目錄的 Data 文件夾下

–output-dir Models:實體保存在根目錄的 Models 文件夾下

5.5 測試源碼

在 Program.cs 添加測試代碼:

using DbFirstTest.Data; using DbFirstTest.Models;EfCoreContext db = new EfCoreContext(); Test test = new Test() {Id = Guid.NewGuid(),Name = "Add" }; db.Tests.Add(test); db.SaveChanges(); Console.WriteLine("Add Successful!");

在項目根目錄下,執(zhí)行:

dotnet build #編譯 dotnet run #運(yùn)行

執(zhí)行以后,可以看到,數(shù)據(jù)庫中添加了相應(yīng)的記錄。

5.6 源碼

Gitee:https://gitee.com/lisheng741/testnetcore/tree/master/EFCore/DbFirstTest

Github:https://github.com/lisheng741/testnetcore/tree/master/EFCore/DbFirstTest

參考來源

EF Core官方文檔:反向工程

總結(jié)

以上是生活随笔為你收集整理的EFCore 的 DbFirst 模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。