EF Core 5.0 DB First和CodeFirst实现

一、DB First

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

1.安装工具

.NET Core CLI 命令:

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

Visual Studio命令:

Install-Package Microsoft.EntityFrameworkCore.Tools

 

2.安装数据库提供程序

.NET Core CLI 命令:

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

Visual Studio命令:

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

Visual Studio命令:

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-ef
dotnet add package Microsoft.EntityFrameworkCore.Design

Visual Studio命令:

Install-Package Microsoft.EntityFrameworkCore.Tools

 

2.安装数据库提供程序

.NET Core CLI 命令:

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

Visual Studio命令:

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<Blog> Blogs { get; set; }
        public DbSet<Post> 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<Post> Posts { get; } = new List<Post>();
    }
​
    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 InitialCreate
dotnet ef database update

Visual Studio命令:

Add-Migration InitialCreate
Update-Database

 

5.更新数据库

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

.NET Core CLI 命令:

dotnet ef migrations remove
dotnet ef database update

Visual Studio命令:

Remove-Migration
Update-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

 

 

Visual Studio 下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 中添加。
posted @ 2018-04-28 10:49  刘大大。  阅读(6530)  评论(5编辑  收藏  举报