博客
关于我
EF Core 5.0 DB First和CodeFirst实现
阅读量:456 次
发布时间:2019-03-06

本文共 3969 字,大约阅读时间需要 13 分钟。

一、DB First

DB First是基于数据库架构生成DbContext及实体类型的过程。

1.安装工具

.NET Core CLI 命令:

dotnet tool install --global dotnet-efdotnet add package Microsoft.EntityFrameworkCore.Design

命令:

Install-Package Microsoft.EntityFrameworkCore.Tools

 

2.安装

.NET Core CLI 命令:

dotnet add package Pomelo.EntityFrameworkCore.MySql --version 5.0.0-alpha.2

命令:

Install-Package Pomelo.EntityFrameworkCore.MySql -Version 5.0.0-alpha.2

 

3.生成DbContext、实体模型

.NET Core CLI 命令:

dotnet ef dbcontext scaffold "Server=localhost;Uid=root;Pwd=123456;Database=databaseName" Pomelo.EntityFrameworkCore.MySql

命令:

Scaffold-DbContext 'Server=localhost;Uid=root;Pwd=123456;Database=databaseName' Pomelo.EntityFrameworkCore.MySql

 

 

二、Code First

CodeFirst是基于DbContext及实体类型生成数据库架构的过程。

1.安装工具

.NET Core CLI 命令:

dotnet tool install --global dotnet-efdotnet add package Microsoft.EntityFrameworkCore.Design

命令:

Install-Package Microsoft.EntityFrameworkCore.Tools

 

2.安装

.NET Core CLI 命令:

dotnet add package Pomelo.EntityFrameworkCore.MySql --version 5.0.0-alpha.2

命令:

Install-Package Pomelo.EntityFrameworkCore.MySql -Version 5.0.0-alpha.2

 

3.创建DbContext、实体模型

定义构成模型的上下文类和实体类:

using System.Collections.Generic;using Microsoft.EntityFrameworkCore;​namespace EFGetStarted{    public class BloggingContext : DbContext    {        public DbSet
Blogs { get; set; } public DbSet
Posts { get; set; }​ protected override void OnConfiguring(DbContextOptionsBuilder options) => options.UseSqlite("Data Source=blogging.db"); }​ public class Blog { public int BlogId { get; set; } public string Url { get; set; }​ public List
Posts { get; } = new List
(); }​ public class Post { public int PostId { get; set; } public string Title { get; set; } public string Content { get; set; }​ public int BlogId { get; set; } public Blog Blog { get; set; } }}

 

4.创建数据库

.NET Core CLI 命令:

dotnet ef migrations add InitialCreatedotnet ef database update

命令:

Add-Migration InitialCreateUpdate-Database

 

5.更新数据库

在属性字段变更的情况下,更新数据库结构

.NET Core CLI 命令:

dotnet ef migrations removedotnet ef database update

命令:

Remove-MigrationUpdate-Database

三、参数说明

.NET Core CLI下dotnet ef dbcontext 参数说明:

选项 Short 说明
--data-annotations -d 使用属性可在可能) 的情况下配置模型 (。 如果省略此选项,则只使用 Fluent API。
--context -c DbContext要生成的类的名称。
--context-dir   要放入 DbContext 类文件的目录。 路径相对于项目目录。 命名空间是从文件夹名称派生的。
--context-namespace   要用于生成的类的命名空间 DbContext 。 注意:重写 --namespace 。 在 EF Core 5.0 中添加。
--force -f 覆盖现有文件。
--output-dir -o 要在其中放置实体类文件的目录。 路径相对于项目目录。
--namespace -n 要用于所有生成的类的命名空间。 默认值为从根命名空间和输出目录生成。 在 EF Core 5.0 中添加。
--schema ...   要为其生成实体类型的表的架构。 若要指定多个架构,请重复上述操作 --schema 。 如果省略此选项,则包括所有架构。
--table... -t 要为其生成实体类型的表。 若要指定多个表,请对 -t 每个表重复或 --table 。 如果省略此选项,则包括所有表。
--use-database-names   使用表和列的名称与数据库中显示的名称完全相同。 如果省略此选项,则更改数据库名称以更严格地符合 c # 名称样式约定。
--no-onconfiguring   禁止 OnConfiguring 在生成的类中生成方法 DbContext 。 在 EF Core 5.0 中添加。
--no-pluralize   请勿使用复数化程序。 添加 EF Core 5.0

 

 

下Scaffold-DbContext参数说明

DbContext 数据库的和实体类型生成代码。 为了使 Scaffold-DbContext 生成实体类型,数据库表必须具有主键。

参数:

参数 说明
-连接 <String> 用于连接到数据库的连接字符串。 对于 ASP.NET Core 2.x 项目,值可以是 *name = * 。 在这种情况下,该名称来自为项目设置的配置源。 这是一个位置参数,并且是必需的。
-提供程序 <String> 要使用的提供程序。 通常,这是 NuGet 包的名称,例如: Microsoft.EntityFrameworkCore.SqlServer 。 这是一个位置参数,并且是必需的。
-OutputDir <String> 要在其中放置文件的目录。 路径相对于项目目录。
-ContextDir <String> 要在其中放置文件的目录 DbContext 。 路径相对于项目目录。
-命名空间 <String> 要用于所有生成的类的命名空间。 默认值为从根命名空间和输出目录生成。 在 EF Core 5.0 中添加。
-ContextNamespace <String> 要用于生成的类的命名空间 DbContext 。 注意:重写 -Namespace 。 在 EF Core 5.0 中添加。
-上下文 <String> DbContext要生成的类的名称。
-架构 <String[]> 要为其生成实体类型的表的架构。 如果省略此参数,则包括所有架构。
-表 <String[]> 要为其生成实体类型的表。 如果省略此参数,则包括所有表。
-DataAnnotations 使用属性可在可能) 的情况下配置模型 (。 如果省略此参数,则只使用 Fluent API。
-UseDatabaseNames 使用表和列的名称与数据库中显示的名称完全相同。 如果省略此参数,则更改数据库名称以更严格地符合 c # 名称样式约定。
-Force 覆盖现有文件。
-NoOnConfiguring 不生成 DbContext.OnConfiguring 。 在 EF Core 5.0 中添加。
-NoPluralize 请勿使用复数化程序。 在 EF Core 5.0 中添加。

转载地址:http://oqlyz.baihongyu.com/

你可能感兴趣的文章
Nginx代理websocket配置(解决websocket异常断开连接tcp连接不断问题)
查看>>
Nginx代理初探
查看>>
nginx代理地图服务--离线部署地图服务(地图数据篇.4)
查看>>
Nginx代理外网映射
查看>>
Nginx代理模式下 log-format 获取客户端真实IP
查看>>
Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
查看>>
Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
查看>>
nginx反向代理、文件批量改名及统计ip访问量等精髓总结
查看>>
Nginx反向代理与正向代理配置
查看>>
Nginx反向代理及负载均衡实现过程部署
查看>>
Nginx反向代理是什么意思?如何配置Nginx反向代理?
查看>>
nginx反向代理解决跨域问题,使本地调试更方便
查看>>
Nginx反向代理配置
查看>>
Nginx启动SSL功能,并进行功能优化,你看这个就足够了
查看>>
nginx启动脚本
查看>>
Nginx在Windows上和Linux上(Docker启动)分别配置基本身份认证示例
查看>>
Nginx在Windows下载安装启动与配置前后端请求代理
查看>>
Nginx多域名,多证书,多服务配置,实用版
查看>>
Nginx学习总结(14)——Nginx配置参数详细说明与整理
查看>>
Nginx安装与常见命令
查看>>