新建一个 .NET 5 的控制台应用

我们常用 .NET 做 Web 应用,然而有时需要做一些逻辑上的测试(例如测试EF 7),所以我们有时会选择使用 ConsoleApp 来简单测试一些东西。
此文记录 ConsoleApp 的创建以及 EF 7 的配置过程。

新建 .NET 的 Web 应用

首先,我们从 Visual Studio 2015 新建一个控制台应用程序(如图)。

安装 Entity Framework 7

我们此处以Entity Framework For Microsoft SQL Server 为例。

安装 EntityFramework.MicrosoftSqlServer 程序包

可以手动在 工具 ‣ NuGet 包管理器 ‣ 管理解决方案的 NuGet 包 中搜索 EntityFramework.MicrosoftSqlServer 并选择安装,也可以选择 工具 ‣ NuGet 包管理器 ‣ 程序包管理器控制台 ,通过 Install-Package 命令 手动添加:

1
PM> Install-Package EntityFramework.MicrosoftSqlServer –Pre

这样就安装好了 EF 7 For SQL Server 的依赖库。

连接数据库

需要在自己定义的 DbContext 类中重写 OnConfiguring 方法。

此处以 在 (localdb)\mssqllocaldb 上创建一个名叫 EFGetStarted.ConsoleAppFortest.DbForTest 的数据库 为例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class AppDbContext : DbContext
{

...

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// Visual Studio 2015 | Use the LocalDb 12 instance created by Visual Studio
optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.ConsoleAppFortest.DbForTest;Trusted_Connection=True");
}

...

}

接下来有两种方案,代码创建和手动添加 Migration。

代码创建 Migration

在创建完自己的 DbContext 对象后,通过调用该对象的 Database.EnsureCreated() 方法保证 Migration 被创建。

1
2
3
4
5
6
7
8
9
10
11
public static void Main(string[] args)
{

...

var dbContext = new AppDbContext();
dbContext.Database.EnsureCreated();

...

}

这时配置便已经完成,可以运行了。

手动添加 Migration

手动添加 Migration 需要安装一个包并注册一个命令:

1
PM> Install-Package EntityFramework.Commands –Pre

并在 project.json 的 commands 里添加

1
"ef": "EntityFramework.Commands"

接着就可以在 NuGet 命令行里添加 Migration 了(新的 Migration 命名为 MyFirstMigration ):

1
2
PM> Add-Migration MyFirstMigration
PM> Update-Database

我在执行 Add-Migration 的时候出现了一点意外,无法识别这一命令,于是我直接打开了 工作目录/src/项目名称/ 文件夹,在这里使用了命令行:

1
2
工作目录/src/项目名称>dnx ef migrations add MyFirstMigration
工作目录/src/项目名称>dnx ef database update

此时就在用户文件夹下生成了对应的数据库文件。

这时,配置工作全部完成。

当下次修改了数据库结构时,需重新创建 Migration 并 Update 。