# EntityFramework Core

## 安装EF Core包

通过NuGet获取要使用的数据库支持。比如：Microsoft SQL Sever

`Install-Package Microsoft.EntityFrameworkCore.SqlServer`

参考微软官方文档：[数据库提供程序](https://docs.microsoft.com/zh-cn/ef/core/providers/?tabs=dotnet-core-cli)

## 创建数据库上下文

```
public class AppDbContext:DbContext
{
    // 将应用程序的配置传递给DbContext
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }

    // 对要使用到的每个实体都添加 DbSet<TEntity> 属性
    // 通过DbSet属性来进行增删改查操作
    // 对DbSet采用Linq查询的时候，EFCore自动将其转换为SQL语句
    public DbSet<Student> Students { get; set; }
}
```

## 在ConfigureServices方法中添加上下文依赖注入

```
services.AddDbContextPool<AppDbContext>(
                options => options.UseSqlServer(_configuration.GetConnectionString("StudentDBConnection"))
                );
```

## 在appsettings.json中添加链接数据库字符串

```
"ConnectionStrings": {
    "StudentDBConnection": "server=localhost;database=StudentDB;Trusted_Connection=true"
  }
```

## EF Core常用命令

| 命令                   | 含义                   |
| -------------------- | -------------------- |
| Add-Migration        | 添加新的迁移               |
| Update-Database      | 将数据库更新为指定的迁移         |
| Get-Help about\_enti | 显示帮助列表               |
| Remove-Migration     | 删除上一次迁移              |
| Drop-Database        | 删除数据库                |
| Get-DbContext        | 获取有关DbContext类型的信息   |
| Script-Migration     | 从迁移生成SQL脚本           |
| Scaffold-DbContext   | 搭建数据库的DbContext和实体类型 |

{% hint style="info" %}
如果无法执行命令，应简直是否安装了EF Core Tool
{% endhint %}

`Install-Package Microsoft.EntityFrameworkCore.Tools`

微软EF Core参考文档：<https://docs.microsoft.com/zh-cn/ef/core/>
