1. 简介
Entity Framework Core 可通过数据库提供给应用程序的插件访问许多不同的数据库. 我们可以通过使用 Entity Framework Core 构建执行基本数据访问的 ASP.NET Core MVC 应用程序, 对现有数据库进行反向工程以便创建 Entity Framework 模型.
2. 创建数据库
我们可以通过 Visual Studio 创建一个数据库再进行演示, 步骤如下:
●打开 Visual Studio 开发工具
●"工具">"连接到数据库"
●选择 "Microsoft SQL Server"(因为我本机是用 MSS), 然后单击 "确定"
●输入 "(localdb)\mssqllocaldb" 或者 "." 作为服务器名称
●选择或输入 "master" 作为数据库名称, 然后单击 "确定"
●master 数据库现在显示在 "服务器资源管理器" 的 "数据连接" 中
●右键单击 "服务器资源管理器" 中的数据库, 然后选择 "新建查询"
●将下列脚本复制到查询编辑器中:
- CREATE DATABASE [Blogging];
- GO
- USE [Blogging];
- GO
- CREATE TABLE [Blog] (
- [BlogId] int NOT NULL IDENTITY,
- [Url] nvarchar(max) NOT NULL,
- CONSTRAINT [PK_Blog] PRIMARY KEY ([BlogId])
- );
- GO
- CREATE TABLE [Post] (
- [PostId] int NOT NULL IDENTITY,
- [BlogId] int NOT NULL,
- [Content] nvarchar(max),
- [Title] nvarchar(max),
- CONSTRAINT [PK_Post] PRIMARY KEY ([PostId]),
- CONSTRAINT [FK_Post_Blog_BlogId] FOREIGN KEY ([BlogId]) REFERENCES [Blog] ([BlogId]) ON DELETE CASCADE
- );
- GO
- INSERT INTO [Blog] (Url) VALUES
- ('http://blogs.msdn.com/dotnet'),
- ('http://blogs.msdn.com/webdev'),
- ('http://blogs.msdn.com/visualstudio')
- GO
●点击 Execute 按钮或者敲击 Ctrl+Shift+E 执行 T-SQL 查询
创建数据库成功.
3. 对模型实施反向工程
3.1 反向工程
什么是反向工程? 反向工程开始时会读取链接数据库的架构, 它将读取有关表, 列, 约束和索引的信息. 接下来, 它使用的架构信息创建 EF Core 模型. 使用表来创建实体类型; 使用列来创建属性; 外键用于创建关系. 最后, 从你的应用程序中搭建实体类型的类 Fluent API 和数据批注和重新创建相同的模型.
3.2 基于现有数据库创建 EF 模型
当我们在 PowerShell 运行以下命令从现有数据库创建模型时候, 会提示如下错误:
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
关于程序包管理器不支持 PowerShell 2.0 版本问题, 解决方法如下:
●打开 https://www.microsoft.com/zh-CN/download/details.aspx?id=40855 链接地址
●选择 Windows6.1-KB2819745-x64-MultiPkg.msu 安装升级版本
现在我们再在 PowerShell 运行以下命令看看:
从现有数据库创建 EF 模型成功.
4. 创建控制器和视图
从现有数据库创建 EF 模型之后, 我们可以通过创建控制器和视图增删改数据. 可以通过以下步骤创建控制器跟视图:
●在 "解决方案资源管理器" 中, 右键单击 "控制器" 文件夹, 然后选择 "添加">"控制器"
●选择 "视图使用 Entity Framework 的 MVC 控制器", 然后单击 "添加"
●将 "模型类" 设置为 "Blog", 将 "数据上下文类" 设置为 "BloggingContext" 单击 "添加"
参考文献:
通过现有数据库在 ASP.NET Core 上开始使用 EF Core
反向工程
来源: https://www.cnblogs.com/wzk153/p/11380930.html