免费学做网站,怎么做彩票平台网站,做跨境的网站,中国空间站成为全人类太空之家#x1f680; 优质资源分享 #x1f680;
学习路线指引#xff08;点击解锁#xff09;知识定位人群定位#x1f9e1; Python实战微信订餐小程序 #x1f9e1;进阶级本课程是python flask微信小程序的完美结合#xff0c;从项目搭建到腾讯云部署上线#xff0c;打造一… 优质资源分享
学习路线指引点击解锁知识定位人群定位 Python实战微信订餐小程序 进阶级本课程是python flask微信小程序的完美结合从项目搭建到腾讯云部署上线打造一个全栈订餐系统。Python量化交易实战入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
1 前言
EF6 时代可以通过界面操作添加数据库实体。
EF Core 需要通过 CLI 来进行该操作具体请参考EF Core官方文档反向工程。
2 前置条件
PMC 工具仅限 Visual Studio或 CLI 工具。核心 NuGet 包Microsoft.EntityFrameworkCore.Design还需要为要进行反向工程的数据库架构安装适当的数据库提供程序
3 主命令
dotnet ef dbcontext scaffold [数据库连接串] [提供程序]
如
dotnet ef dbcontext scaffold serverlocalhost;databaseefcore;uidsa;pwdQwe123456; Microsoft.EntityFrameworkCore.SqlServer
4 命令参数
4.1 生成指定表–table
上述命令会生成整个数据库的表如果需要指定特定的表需要使用如下
dotnet ef dbcontext scaffold [数据库连接串] [提供程序] --table table_name1 --table table_name2
4.2 保留数据库名称–use-database-names
默认情况会修正表/列名使用该参数尽量保留原名称。
-UseDatabaseNames #PMC
--use-database-names #.NET Core CLI
4.3 Fluent API 和数据注释–data-annotations
默认情况下使用 Fluent API 配置实体类型。使用下面的命令可以改为使用数据注释。
-DataAnnotations #PMC
--data-annotations #.NET Core CLI
Fluent API
entity.Property(e e.Title).IsRequired().HasMaxLength(160);
数据注释
[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 数据库准备
由于是 DbFirst所以这里我们先创建一个数据库名为 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 执行 Scaffold 命令
在控制台程序的根目录下执行命令连接串请自行修改成自己的
dotnet ef dbcontext scaffold serverlocalhost;databaseefcore;uidsa;pwdQwe123456; Microsoft.EntityFrameworkCore.SqlServer --data-annotations --context EfCoreContext --context-dir Data --output-dir Models
–data-annotations数据注释在实体上
–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);
在项目根目录下执行
dotnet build #编译
dotnet run #运行
执行以后可以看到数据库中添加了相应的记录。
5.6 源码
Giteehttps://gitee.com/lisheng741/testnetcore/tree/master/EFCore/DbFirstTest
Githubhttps://github.com/lisheng741/testnetcore/tree/master/EFCore/DbFirstTest
参考来源
EF Core官方文档反向工程