From 15914fd4f1fbe06c2bcaf0e729277e8113d73b95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E5=A3=AB=E4=BC=9F?= Date: Wed, 20 Mar 2019 17:28:31 +0800 Subject: [PATCH] Update documents for the DbMigrations change --- .../Getting-Started-AspNetCore-MVC-Template.md | 10 ++++++---- docs/zh-Hans/Tutorials/AspNetCore-Mvc/Part-I.md | 4 ++-- .../zh-Hans/Tutorials/AspNetCore-Mvc/Part-III.md | 1 - .../bookstore-visual-studio-solution-v2.png | Bin 0 -> 8946 bytes docs/zh-Hans/images/pcm-update-database-v2.png | Bin 0 -> 6441 bytes 5 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 docs/zh-Hans/images/bookstore-visual-studio-solution-v2.png create mode 100644 docs/zh-Hans/images/pcm-update-database-v2.png diff --git a/docs/zh-Hans/Getting-Started-AspNetCore-MVC-Template.md b/docs/zh-Hans/Getting-Started-AspNetCore-MVC-Template.md index 6f274b5177..e8ce4fa71a 100644 --- a/docs/zh-Hans/Getting-Started-AspNetCore-MVC-Template.md +++ b/docs/zh-Hans/Getting-Started-AspNetCore-MVC-Template.md @@ -12,14 +12,14 @@ 下载的项目需要: -* [Visual Studio 2017 (v15.7.0+)](https://visualstudio.microsoft.com/tr/downloads/) +* [Visual Studio 2017 (v15.9.0+)](https://visualstudio.microsoft.com/tr/downloads/) * [.NET Core 2.1.1+](https://www.microsoft.com/net/download/dotnet-core/) ### 解决方案结构 下载后解压文件并在 **Visual Studio 2017(15.7.0 +)** 中打开: -![bookstore-visual-studio-solution](images/bookstore-visual-studio-solution.png) +![bookstore-visual-studio-solution](images/bookstore-visual-studio-solution-v2.png) 该解决方案具有分层结构(基于域驱动设计), 其中: @@ -28,6 +28,8 @@ * ``.Web`` 为是表示层. * ``.EntityFrameworkCore`` 是EF Core集成. +EF Core 数据库迁移被分离到名为`.EntityFrameworkCore.DbMigrations`项目中. + 解决方案还包含配置好的的单元&集成测试项目, 以便与 **EF Core** 和 **SQLite内存中** 数据库配合使用. ### 创建数据库 @@ -48,9 +50,9 @@ ![set-as-startup-project](images/set-as-startup-project.png) -打开**包管理器控制台(Package Manager Console)**, 选择`.EntityFrameworkCore`项目作为**默认项目**并运行`Update-Database`命令: +打开**包管理器控制台(Package Manager Console)**, 选择`.EntityFrameworkCore.DbMigrations`项目作为**默认项目**并运行`Update-Database`命令: -![pcm-update-database](images/pcm-update-database.png) +![pcm-update-database](images/pcm-update-database-v2.png) 这将基于配置的连接字符串创建新数据库. diff --git a/docs/zh-Hans/Tutorials/AspNetCore-Mvc/Part-I.md b/docs/zh-Hans/Tutorials/AspNetCore-Mvc/Part-I.md index 34acc3f01f..dfc17e431d 100644 --- a/docs/zh-Hans/Tutorials/AspNetCore-Mvc/Part-I.md +++ b/docs/zh-Hans/Tutorials/AspNetCore-Mvc/Part-I.md @@ -20,7 +20,7 @@ 下面的图片展示了从启动模板创建的项目是如何分层的. -![bookstore-visual-studio-solution](images/bookstore-visual-studio-solution.png) +![bookstore-visual-studio-solution](images/bookstore-visual-studio-solution-v2.png) ### 创建Book实体 @@ -93,7 +93,7 @@ public class BookStoreDbContext : AbpDbContext 这个启动模板使用了[EF Core Code First Migrations](https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/)来创建并维护数据库结构.打开 **Package Manager Console (PMC)** (工具/Nuget包管理器菜单),选择 `Acme.BookStore.EntityFrameworkCore`作为默认的项目然后执行下面的命令: -![bookstore-pmc-add-book-migration](images/bookstore-pmc-add-book-migration.png) +![bookstore-pmc-add-book-migration](images/bookstore-pmc-add-book-migration-v2.png) 这样就会在`Migrations`文件夹中创建一个新的migration类.然后执行`Update-Database`命令更新数据库结构. diff --git a/docs/zh-Hans/Tutorials/AspNetCore-Mvc/Part-III.md b/docs/zh-Hans/Tutorials/AspNetCore-Mvc/Part-III.md index 6b31e9ba84..0514c8fc1a 100644 --- a/docs/zh-Hans/Tutorials/AspNetCore-Mvc/Part-III.md +++ b/docs/zh-Hans/Tutorials/AspNetCore-Mvc/Part-III.md @@ -14,7 +14,6 @@ 本解决方案中有两个测试项目: -![bookstore-test-projects](images/bookstore-test-projects.png) * `Acme.BookStore.Application.Tests` 项目用于单元测试和集成测试.你可以在这个项目中为Application Service方法写测试代码.这个项目使用了 **EF Core SQLite in-memory** 数据库. * `Acme.BookStore.Web.Tests` 项目用于包含Web层的完整集成测试.所以,你也可以在这里写关于UI页面的测试. diff --git a/docs/zh-Hans/images/bookstore-visual-studio-solution-v2.png b/docs/zh-Hans/images/bookstore-visual-studio-solution-v2.png new file mode 100644 index 0000000000000000000000000000000000000000..48b5881e96d7d55d8ac5a292183c6236a07e9f05 GIT binary patch literal 8946 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 literal 0 HcmV?d00001