博客
关于我
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/

你可能感兴趣的文章
mysql order by多个字段排序
查看>>
MySQL Order By实现原理分析和Filesort优化
查看>>
mysql problems
查看>>
mysql replace first,MySQL中处理各种重复的一些方法
查看>>
MySQL replace函数替换字符串语句的用法(mysql字符串替换)
查看>>
mysql replace用法
查看>>
Mysql Row_Format 参数讲解
查看>>
mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序
查看>>
MySQL Server 5.5安装记录
查看>>
mysql server has gone away
查看>>
mysql skip-grant-tables_MySQL root用户忘记密码怎么办?修改密码方法:skip-grant-tables
查看>>
mysql slave 停了_slave 停止。求解决方法
查看>>
MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
查看>>
MYSQL sql语句针对数据记录时间范围查询的效率对比
查看>>
mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
查看>>
mysql sysbench测试安装及命令
查看>>
mysql Timestamp时间隔了8小时
查看>>
Mysql tinyint(1)与tinyint(4)的区别
查看>>
MySQL Troubleshoting:Waiting on query cache mutex
查看>>
mysql union orderby 无效
查看>>