From fdea8670b4b80b411ea38c3b42cd8221eabc3c54 Mon Sep 17 00:00:00 2001 From: gsonovb Date: Sat, 4 Dec 2021 11:06:54 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=F0=9F=93=9D=20Update=20getting=20start?= =?UTF-8?q?ed=20web=20translation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/Getting-Started-Running-Solution.md | 2 +- docs/en/Getting-Started.md | 2 +- .../Getting-Started-Create-Solution.md | 73 ++++ .../Getting-Started-Running-Solution.md | 199 ++++++++++ .../Getting-Started-Setup-Environment.md | 53 +++ docs/zh-Hans/Getting-Started.md | 370 +----------------- docs/zh-Hans/docs-nav.json | 18 +- 7 files changed, 351 insertions(+), 366 deletions(-) create mode 100644 docs/zh-Hans/Getting-Started-Create-Solution.md create mode 100644 docs/zh-Hans/Getting-Started-Running-Solution.md create mode 100644 docs/zh-Hans/Getting-Started-Setup-Environment.md diff --git a/docs/en/Getting-Started-Running-Solution.md b/docs/en/Getting-Started-Running-Solution.md index 3f508589a3..27e6ac3dee 100644 --- a/docs/en/Getting-Started-Running-Solution.md +++ b/docs/en/Getting-Started-Running-Solution.md @@ -139,7 +139,7 @@ Ensure that the `.IdentityServer` project is the startup project. Run the applic > Use Ctrl+F5 in Visual Studio (instead of F5) to run the application without debugging. If you don't have a debug purpose, this will be faster. -You can login, but you cannot enter to the main application here. This is just the authentication server. +You can login, but you cannot enter to the main application here. This is **just the authentication server**. Ensure that the `.HttpApi.Host` project is the startup project and run the application which will open a Swagger UI: diff --git a/docs/en/Getting-Started.md b/docs/en/Getting-Started.md index b3fd215e35..0304eb2320 100644 --- a/docs/en/Getting-Started.md +++ b/docs/en/Getting-Started.md @@ -15,6 +15,6 @@ This tutorial explains how to **create and run** a new web application using the ABP Framework. Follow the steps below; -1. [Setup your development environment](Getting-Started-Setup-Environment) +1. [Setup your development environment](Getting-Started-Setup-Environment.md) 2. [Creating a new solution](Getting-Started-Create-Solution.md) 3. [Running the solution](Getting-Started-Running-Solution.md) \ No newline at end of file diff --git a/docs/zh-Hans/Getting-Started-Create-Solution.md b/docs/zh-Hans/Getting-Started-Create-Solution.md new file mode 100644 index 0000000000..1ef4879a08 --- /dev/null +++ b/docs/zh-Hans/Getting-Started-Create-Solution.md @@ -0,0 +1,73 @@ +# 入门教程 + +````json +//[doc-params] +{ + "UI": ["MVC", "Blazor", "BlazorServer", "NG"], + "DB": ["EF", "Mongo"], + "Tiered": ["Yes", "No"] +} +```` + +> 本文档假设你更喜欢使用 **{{ UI_Value }}** 作为 UI 框架, 使用 **{{ DB_Value }}** 作为数据库提供程序. 对于其他选项, 请更改本文档顶部的首选项. + +## 创建新项目 + +我们将使用 ABP CLI 创建一个新的 ABP 项目. + +> 或者, 你可以使用[ABP Framework 网站](https://abp.io/get-started)页面上的选项轻松的 **创建并下载** 项目. + +使用 ABP CLI 的 `new` 命令创建一个新项目: + +````shell +abp new Acme.BookStore{{if UI == "NG"}} -u angular{{else if UI == "Blazor"}} -u blazor{{else if UI == "BlazorServer"}} -u blazor-server{{end}}{{if DB == "Mongo"}} -d mongodb{{end}}{{if Tiered == "Yes"}}{{if UI == "MVC" || UI == "BlazorServer"}} --tiered{{else}} --separate-identity-server{{end}}{{end}} +```` + +*你可以使用不同级别的命名空间, 例如: BookStore、Acme.BookStore或 Acme.Retail.BookStore.* + +{{ if Tiered == "Yes" }} + +{{ if UI == "MVC" || UI == "BlazorServer" }} + +* `--tified` 参数用于创建认证服务器、 UI 和 API 实际分隔的 N-层解决方案. + +{{ else }} + +* `--separate-identity-server` 参数用于将Identity Server应用程序与API主机应用程序分隔开. 如果未指定, 则服务器上将只有一个端点. + +{{ end }} + +{{ end }} + +> [ABP CLI 文档](./CLI.md) 涵盖了所有可用的命令和选项. + +## 移动端开发 + +如果你想要在你的解决方案中包含 [React Native](https://reactnative.dev/) 项目, 将 `-m react-native` (or `--mobile react-native`) 参数添加到项目创建命令. 这是一个基础的 React Native 启动模板, 用于开发基于你的 ABP 后端的移动应用程序. + +请参阅 [React Native 入门](Getting-Started-React-Native.md) 文档, 了解如何配置和运行 React Native 应用程序. + +### 解决方案结构 + +该解决方案具有分层结构 (基于 [域驱动设计](Domain-Driven-Design.md)), 并包含单元 & 集成测试项目. 请参阅 [应用程序模板文档](Startup-Templates/Application.md) 以详细了解解决方案结构. + +{{ if DB == "Mongo" }} + +#### MongoDB 事务 + +[启动模板](Startup-templates/Index.md) 默认在`.MongoDB`项目中**禁用**事务. 如果你的MongoDB服务器支持事务, 你可以在*YourProjectMongoDbModule*类中的`ConfigureServices`方法开启它: + + ```csharp +Configure(options => +{ + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Auto; +}); + ``` + +> 或者你可以删除该代码, 因为 `Auto` 已经是默认行为. + +{{ end }} + +## 下一步 + +* [运行解决方案](Getting-Started-Running-Solution.md) \ No newline at end of file diff --git a/docs/zh-Hans/Getting-Started-Running-Solution.md b/docs/zh-Hans/Getting-Started-Running-Solution.md new file mode 100644 index 0000000000..91ee846bc2 --- /dev/null +++ b/docs/zh-Hans/Getting-Started-Running-Solution.md @@ -0,0 +1,199 @@ +# 入门教程 + +````json +//[doc-params] +{ + "UI": ["MVC", "Blazor", "BlazorServer", "NG"], + "DB": ["EF", "Mongo"], + "Tiered": ["Yes", "No"] +} +```` + +> 本文档假设你更喜欢使用 **{{ UI_Value }}** 作为 UI 框架, 使用 **{{ DB_Value }}** 作为数据库提供程序. 对于其他选项, 请更改本文档顶部的首选项. + +## 创建数据库 + +### 连接字符串 + +检查在 {{if Tiered == "Yes"}}`.IdentityServer` 和`.HttpApi.Host` 项目{{else}}{{if UI=="MVC"}}`.Web` 项目{{else if UI=="BlazorServer"}}`.Blazor` 项目{{else}}`.HttpApi.Host` 项目{{end}}{{end}} 中 `appsettings.json` 文件里的**连接字符串**. + +{{ if DB == "EF" }} + +````json +"ConnectionStrings": { + "Default": "Server=(LocalDb)\MSSQLLocalDB;Database=BookStore;Trusted_Connection=True" +} +```` + +> **关于连接字符串和数据库管理系统** +> +> 解决方案配置为默认使用 **Entity Framework Core** 与 **MS SQL Server**. 但是, 如果在执行ABP CLI 的`new`命令时使用了`-dbms`参数来选择其他DBMS (如`-dbms MySQL`), 那么连接字符串可能不同. +> +> EF Core 支持 [多种](https://docs.microsoft.com/en-us/ef/core/providers/) 据库提供程序, 因此你可以使用任何受支持的DBMS. 你可以需要时候参阅[Entity Framework 集成文档](Entity-Framework-Core.md) 来学习如何[切换到另一个DBMS](Entity-Framework-Core-Other-DBMS.md). + +### 数据库迁移 + +该解决方案使用[Entity Framework Core Code First 迁移](https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/?tabs=dotnet-core-cli). 带有 `.DbMigrator` 的控制台程序用于 **应用迁移** 和 **初始化种子数据**. 它在**开发**和**生产**环境中都很有用. + +> `.dbMigator` 项目有自己的 `appsettings.json`. 因此, 如果你更改了之前的连接字符串, 那么也应该更改这个连接字符串. + +### 初次迁移 + +`.dbMigator` 应用程序在首次运行时自动**创建初始迁移**. + +**如果你使用的是 Visual Studio, 你可以跳到 *运行 dbMigrator* 部分.** 但是, 其他 IDE (例如 Rider) 在首次运行时可能会遇到问题, 因为它会添加初始迁移并编译项目. 在这种情况下, 请在 `.dbMigration` 项目的文件夹中打开命令行终端, 然后运行以下命令: + +````bash +dotnet run +```` + +下次, 你可以像往常一样在 IDE 中运行它. + +### 运行迁移 + +右键单击 `.dbMigration` 项目, 然后选择 **设置为启动项目** + +![set-as-startup-project](images/set-as-startup-project.png) + + 按F5(或Ctrl + F5) 运行应用程序. 它将具有如下所示的输出: + + ![db-migrator-output](images/db-migrator-output.png) + +> 初始的[种子数据](Data-Seeding.md)在数据库中创建了 `admin` 用户(密码为`1q2w3E*`) 用于登录应用程序. 所以, 对于新数据库至少使用 `.DbMigrator` 一次. + +{{ else if DB == "Mongo" }} + +````json +"ConnectionStrings": { + "Default": "mongodb://localhost:27017/BookStore" +} +```` + +该解决方案配置为在本地计算机中使用 **MongoDB**, 因此你需要启动并运行 MongoDB 服务器实例, 或者将连接字符串更改为另一台 MongoDB 服务器. + +### 种子初始数据 + +该解决方案带有 `.DbMigrator` 的控制台程序用于 **初始化种子数据**. 它在**开发**和**生产**环境中都很有用. + +> `.dbMigator` 项目有自己的 `appsettings.json`. 因此, 如果你更改了之前的连接字符串, 那么也应该更改这个连接字符串. + +右键单击 `.dbMigration` 项目, 然后选择 **设置为启动项目** + +![set-as-startup-project](images/set-as-startup-project.png) + + 按F5(或Ctrl + F5) 运行应用程序. 它将具有如下所示的输出: + + ![db-migrator-output](images/db-migrator-output.png) + +> 初始的[种子数据](Data-Seeding.md)在数据库中创建了 `admin` 用户(密码为`1q2w3E*`) 用于登录应用程序. 所以, 对于新数据库至少使用 `.DbMigrator` 一次. + +{{ end }} + +## 运行应用程序 + +{{ if UI == "MVC" || UI == "BlazorServer" }} + +{{ if Tiered == "Yes" }} + +> 分层解决方案使用 **Redis** 作为分布式缓存. 确保它已安装并在本地计算机上运行. 如果你使用的是远程 Redis 服务器, 请修改项目的 ` appsettings.json` 文件中的配置. + +1. 确保 `.IdentityServer` 项目是启动项目. 运行此应用程序, 它将在浏览器中打开 **登录** 页面. + +> 在 Visual Studio 中使用 Ctrl+F5(而不是F5) 在不进行调试的情况下运行应用程序. 如果你没有调试目的, 这会更快. + +你可以登录, 但不能在这里进入主应用程序. 这 **只是身份验证服务器**. + +2. 确保 `.httpapi.Host` 项目是启动项目, 然后运行应用将在浏览器中打开 **Swagger UI**. + +![swagger-ui](images/swagger-ui.png) + +这是 Web 应用程序使用的 HTTP API. + +3. 最后, 确保 {{if UI=="MVC"}}`.Web`{{else}}`.Blazor`{{end}} 项目是启动项目,然后运行应用程序,它将在浏览器中打开 **欢迎** 页面 + +![mvc-tiered-app-home](images/bookstore-home.png) + +单击 **login** 按钮, 它将重定向到 *身份验证服务器* 以登录到应用程序: + +![bookstore-login](images/bookstore-login.png) + +{{ else # Tiered != "Yes" }} + +确保 {{if UI=="MVC"}}`.Web`{{else}}`.Blazor`{{end}} 项目是启动项目. 运行应用程序将会在浏览器中打开 **login** 页面: + +> 在 Visual Studio 中使用 Ctrl+F5(而不是F5) 在不进行调试的情况下运行应用程序. 如果你没有调试目的, 这会更快. + +![bookstore-login](images/bookstore-login.png) + +{{ end # Tiered }} + +{{ else # UI != MVC || BlazorServer }} + +### 运行 HTTP API 主机(服务器端) + +{{ if Tiered == "Yes" }} + +> 分层解决方案使用 Redis 作为分布式缓存. 确保它已安装并在本地计算机上运行. 如果你使用的是远程 Redis 服务器, 请修改项目的 `appsettings.json` 文件中的配置. + +确保 `.IdentityServer` 项目是启动项目. 运行此应用程序, 它将在浏览器中打开 **登录** 页面. + +> 在 Visual Studio 中使用 Ctrl+F5(而不是F5) 在不进行调试的情况下运行应用程序. 如果你没有调试目的, 这会更快. + +你可以登录, 但不能在这里进入主应用程序. 这 **只是身份验证服务器**. + +确保 `.HttpApi.Host` 项目是启动项目, 然后运行应用程序将打开 Swagger UI 的: + +{{ else # Tiered == "No" }} + +确保 `.HttpApi.Host` 项目是启动项目, 然后运行应用程序将打开 Swagger UI 的: + +> 在 Visual Studio 中使用 Ctrl+F5(而不是F5) 在不进行调试的情况下运行应用程序. 如果你没有调试目的, 这会更快. + +{{ end # Tiered }} + +![swagger-ui](images/swagger-ui.png) + +你可以在这里查看应用程序的API并测试它们. 获取Swagger UI的[更多信息](https://swagger.io/tools/swagger-ui/). + +{{ end # UI }} + +{{ if UI == "Blazor" }} + +### 运行 Blazor 应用程序 (客户端) + +确保 `.Blazor` 项目是启动项目并运行应用程序. + +> 在 Visual Studio 中使用 Ctrl+F5(而不是F5) 在不进行调试的情况下运行应用程序. 如果你没有调试目的, 这会更快. + +应用程序启动后, 单击页头上的 **Login** 链接, 你将重定向到身份验证服务器以输入用户名和密码: + +![bookstore-login](images/bookstore-login.png) + +{{ else if UI == "NG" }} + +### 运行 Angular 应用程序 (客户端) + +转到 `Angular` 文件夹, 打开命令行终端, 键入 `yarn` 命令(我们建议使用 [yarn](https://yarnpkg.com/) 软件包管理器, 而 `npm install` 也可以使用) + +```bash +yarn +``` + +当所有node模块加载完毕后, 执行 `yarn start` (或 `npm start`) 命令: + +```bash +yarn start +``` + +初次构建可能需要更长的时间. 完成后, 它会在默认浏览器中使用 [localhost:4200](http://localhost:4200/) 地址打开 Angular UI. + +![bookstore-login](images/bookstore-login.png) + +{{ end }} + +输入用户名 **admin** 和 密码 **1q2w3E*** 登录应用程序. 应用程序已启动并正在运行. 你可以根据此启动模板开始开发应用程序. + +## 另请参见 + +* [Web 应用程序开发教程](Tutorials/Part-1.md) +* [应用程序启动模板](Startup-Templates/Application.md) diff --git a/docs/zh-Hans/Getting-Started-Setup-Environment.md b/docs/zh-Hans/Getting-Started-Setup-Environment.md new file mode 100644 index 0000000000..c0c2d5d924 --- /dev/null +++ b/docs/zh-Hans/Getting-Started-Setup-Environment.md @@ -0,0 +1,53 @@ +# 入门教程 + +````json +//[doc-params] +{ + "UI": ["MVC", "Blazor", "BlazorServer", "NG"], + "DB": ["EF", "Mongo"], + "Tiered": ["Yes", "No"] +} +```` + +> 本文档假设你更喜欢使用 **{{ UI_Value }}** 作为 UI 框架, 使用 **{{ DB_Value }}** 作为数据库提供程序. 对于其他选项, 请更改本文档顶部的首选项. + +## 设置你的开发环境 + +第一件事! 在创建项目之前, 让我们先设置你的开发环境. + +### 先决条件 + +开发计算机上应安装以下工具: + +* 一个集成开发环境 (比如: [Visual Studio](https://visualstudio.microsoft.com/vs/)) 它需要支持 [.NET 6.0+](https://dotnet.microsoft.com/download/dotnet) 的开发. +{{ if UI != "Blazor" }} +* [Node v12 或 v14](https://nodejs.org/) +* [Yarn v1.20+ (不是v2)](https://classic.yarnpkg.com/en/docs/install) [1](#f-yarn) 或 npm v6+ (已跟随Node一起安装) +{{ end }} +{{ if Tiered == "Yes" }} +* [Redis](https://redis.io/) (启动解决方案使用 Redis 作为 [分布式缓存](Caching.md)). +{{ end }} + +{{ if UI != "Blazor" }} + +1 _Yarn v2 工作方式不同, 不被支持._ [↩](#a-yarn) + +{{ end }} + +### 安装 ABP CLI + +[ABP CLI](./CLI.md) 是一个命令行界面, 用于自动执行基于 ABP 的解决方案的一些常见任务. 首先, 你需要使用以下命令安装 ABP CLI: + +````shell +dotnet tool install -g Volo.Abp.Cli +```` + +如果已安装, 则可以使用以下命令对其进行更新: + +````shell +dotnet tool update -g Volo.Abp.Cli +```` + +## 下一步 + +* [创建新的解决方案](Getting-Started-Create-Solution.md) \ No newline at end of file diff --git a/docs/zh-Hans/Getting-Started.md b/docs/zh-Hans/Getting-Started.md index c6b3bd70df..1cf1430a35 100644 --- a/docs/zh-Hans/Getting-Started.md +++ b/docs/zh-Hans/Getting-Started.md @@ -1,374 +1,20 @@ -## 入门 +# 入门教程 ````json //[doc-params] { - "UI": ["MVC","NG"], + "UI": ["MVC", "Blazor", "BlazorServer", "NG"], "DB": ["EF", "Mongo"], "Tiered": ["Yes", "No"] } ```` -本教程介绍了如何创建一个新的{{if UI == "MVC"}} ASP.NET Core MVC web {{else if UI == "NG"}} Angular {{end}}. 配置并运行它. +> 本文档假设你更喜欢使用 **{{ UI_Value }}** 作为 UI 框架, 使用 **{{ DB_Value }}** 作为数据库提供程序. 对于其他选项, 请更改本文档顶部的首选项. -## 设置你的开发环境 +## 内容 -创建第一个项目之前,需要正确的设置你的开发环境. +本教程介绍如何使用 ABP 框架 **创建和运行** 新的 Web 应用程序. 请按照以下步骤操作; -### 预先要求 - -你需要安装以下工具: - -* [Visual Studio 2019 (v16.4+)](https://visualstudio.microsoft.com/vs/) for Windows / [Visual Studio for Mac](https://visualstudio.microsoft.com/vs/mac/).[1](#f-editor) -* [.NET Core 3.1+](https://www.microsoft.com/net/download/dotnet-core/) - -* [Node v12 或 v14](https://nodejs.org/en/) -* [Yarn v1.19+](https://classic.yarnpkg.com/) -* [Yarn v1.20+ (not v2)](https://classic.yarnpkg.com/en/docs/install) [2](#f-yarn) 或 npm v6+ (与Node一起安装) -{{ if Tiered == "Yes" }} - -* [Redis](https://redis.io/): 入门解决方案将Redis用作[分布式缓存](Caching.md). 因此你需要安装并运行Redis. - -{{ end }} - -1 _只要支持.NET Core和ASP.NET Core,就可以使用其他编辑器代替Visual Studio._ [↩](#a-editor) - -2 _Yarn v2 的工作方式不同,不受支持._ [↩](#a-yarn) - -### 安装ABP CLI - -[ABP CLI](./CLI.md)是一个命令行页面,用于自动执行一些基于ABP的应用程序的常见任务. - -> ABP CLI是ABP框架一个免费开源的工具. - -你需要使用以下命令安排ABP CLI: - -````shell -dotnet tool install -g Volo.Abp.Cli -```` - -如果你已经安装,你可以使用以下命令更新到最新版本: - -````shell -dotnet tool update -g Volo.Abp.Cli -```` - -## 创建新项目 - -> 本文假设你使用 **{{ UI_Value }}** 做为UI框架 **{{ DB_Value }}** 做为数据库提供程序,对于其它选项,你可以更改文档顶部的首选项. - -### 使用ABP CLI创建一个新项目 - -使用ABP CLI的 `new` 命令创建新项目: - -````shell -abp new Acme.BookStore{{if UI == "NG"}} -u angular {{end}}{{if DB == "Mongo"}} -d mongodb{{end}}{{if Tiered == "Yes" && UI != "NG"}} --tiered {{else if Tiered == "Yes" && UI == "NG"}}--separate-identity-server{{end}} --mobile react-native -```` - -* 此命令还会在解决方案文件夹内创建一个React Native移动应用程序. 如果你不想要它,可以安全地删除它或从`abp new`命令中删除`--mobile react-native`选项, 以使其完全不包含在解决方案中. - -{{ if UI == "NG" }} - -* `-u` 指定UI框架, 本例中是 `angular`. - -{{ if Tiered == "Yes" }} - -* `--separate-identity-server` 参数用于将Identity服务器应用程序与API主机应用程序分隔开. 如果未指定,则服务器上将只有一个端点. - -{{ end }} - -{{ end }} - -{{ if DB == "Mongo" }} - -* `-d` 指定数据库提供程序, 本例中是 `mongodb`. - -{{ end }} - -{{ if Tiered == "Yes" && UI != "NG" }} - -* `--tiered` 参数用于创建n层解决方案,其中身份验证服务器层,UI层和API层在物理上是分离的. - -{{ end }} - -> 你可以使用不同级别的命令空间; 例如. BookStore, Acme.BookStore or Acme.Retail.BookStore. - -#### ABP CLI 命令 & 选项 - -[ABP CLI文档](./CLI.md)涵盖了ABP CLI的所有可用命令和选项. 本文档使用[应用程序启动模板](Startup-Templates/Application.md)创建新的Web应用程序. 有关其他模板,请参见[ABP启动模板](Startup-Templates/Index.md)文档. - -> 或者,您可以从[ABP Framework网站](https://abp.io/get-started)中选择"直接下载"选项卡创建新的解决方案. - -## 解决方案结构 - -{{ if UI == "MVC" }} - -创建项目后你会有以下解决方案目录和文件: - -![](images/solution-files-mvc.png) - -在Visual Studio中打开 `.sln` 文件时,将看到以下解决方案结构: - -{{if DB == "Mongo"}} - -![vs-default-app-solution-structure](images/vs-app-solution-structure-mongodb.png) - -{{else}} - -![vs-default-app-solution-structure](images/vs-app-solution-structure{{if Tiered == "Yes"}}-tiered{{end}}.png) - -{{end}} - -{{ else if UI == "NG" }} - -在创建的解决方案中有三个文件夹: - -![](images/solution-files-non-mvc.png) - -* `angular` 文件夹包含Angular UI应用程序. -* `aspnet-core` 文件夹包含后端应用程序. -* `react-native` 文件夹包含React Native UI 应用程序. - -打开 `aspnet-core` 文件夹下的 `.sln`(`Visual Studio`解决方案)文件: - -![vs-angular-app-backend-solution-structure](images/vs-spa-app-backend-structure{{if DB == "Mongo"}}-mongodb{{end}}.png) - -{{ end }} - -> ###### 关于解决方案中的项目 -> -> 根据你的**UI**,**数据库**和其他选项,你的解决方案的结构可能略有不同. - -该解决方案具有分层结构(基于[Domain Driven Design](Domain-Driven-Design.md)), 并包含配置好的的单元&集成测试项目. - -{{ if DB == "EF" }} - -集成测试项目已配置为可与 **EF Core** & **SQLite 内存** database同时使用. - -{{ else if DB == "Mongo" }} - -集成测试项目已配置为每个测试创建的内存中的**MongoDB**数据库(使用的[Mongo2Go](https://github.com/Mongo2Go/Mongo2Go)库). - -{{ end }} - -> 请参阅[应用程序模板文档](Startup-Templates/Application.md)详细了解解决方案结构. - -{{ if DB == "Mongo" }} - -> [启动模板](Startup-templates/Index.md)默认在 `.MongoDB` 项目中**禁用**了工作单元事务. 如果你的MongoDB服务器支持事务,你可以手动启用工作单元的事务: - - ```csharp - Configure(options => - { - options.TransactionBehavior = UnitOfWorkTransactionBehavior.Enabled; - }); - ``` - -{{ end }} - -## 创建数据库 - -### 连接字符串 - -检查 {{if UI == "MVC"}}{{if Tiered == "Yes"}}`.IdentityServer` 和 `.HttpApi.Host` 项目{{else}}`.Web` 项目{{end}}{{else if UI == "NG" }}`.HttpApi.Host` 项目{{end}}下 `appsettings.json` 文件中的 **链接字符串**: - -{{ if DB == "EF" }} - -````json -"ConnectionStrings": { - "Default": "Server=localhost;Database=BookStore;Trusted_Connection=True" -} -```` - -该解决方案配置为**Entity Framework Core**与**MS SQL Server**一起使用. EF Core支持[各种](https://docs.microsoft.com/en-us/ef/core/providers/)数据库提供程序,因此你可以使用任何受支持的DBMS. 请参阅[Entity Framework集成文档](https://docs.abp.io/en/abp/latest/Entity-Framework-Core)了解如何切换到另一个DBMS. - -### 数据库连接字符串 - -查看`.Web`项目下`appsettings.json`文件中的 **连接字符串**: - -````json -{ - "ConnectionStrings": { - "Default": "Server=localhost;Database=BookStore;Trusted_Connection=True" - } -} -```` - -解决方案使用 **Entity Framework Core** 和 **MS SQL Server**. EF Core支持[各种](https://docs.microsoft.com/zh-cn/ef/core/providers/)数据库提供程序,因此你可以根据实际需要使用其他DBMS. 如果需要,请更改连接字符串. - -### 应用迁移 - -该解决方案使用[Entity Framework Core Code First 迁移](https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/?tabs=dotnet-core-cli). 你需要应用迁移来创建数据库,有两种方法迁移数据库. - -#### 使用DbMigrator应用程序应用迁移 - -该解决方案包含一个控制台应用程序(在此示例中名为`Acme.BookStore.DbMigrator`),可以创建数据库,应用迁移和初始化数据. 它对开发和生产环境都很有用. - -> `.DbMigrator`项目有自己的`appsettings.json`. 因此,如果你更改了上面的连接字符串,则还应更改此字符串. - -右键单击`.DbMigrator`项目并选择 **设置为启动项目**: - -![set-as-startup-project](images/set-as-startup-project.png) - -按F5(或Ctrl + F5)运行应用程序. 它将具有如下所示的输出: - -![set-as-startup-project](images/db-migrator-app.png) - -#### 使用EF Core Update-Database命令 - -Ef Core具有`Update-Database`命令, 可根据需要创建数据库并应用挂起的迁移. 右键单击`.Web`项目并选择**设置为启动项目**: - -{{ if UI == "MVC" }} - -右键单击{{if Tiered == "Yes"}}`.IdentityServer`{{else}}`.Web`{{end}}项目并选择**设置为启动项目**: - -{{ else if UI != "MVC" }} - -右键单击`.HttpApi.Host`项目并选择**设置为启动项目**: - -{{ end }} - -![set-as-startup-project](images/set-as-startup-project.png) - -打开**包管理器控制台(Package Manager Console)**, 选择`.EntityFrameworkCore.DbMigrations`项目作为**默认项目**并运行`Update-Database`命令: - -![package-manager-console-update-database](images/package-manager-console-update-database.png) - -这将基于配置的连接字符串创建新数据库. - -> **使用`.DbMigrator`工具是建议的方法**, 因为它能初始化初始数据能够正确运行Web应用程序. -> -> 如果你只是使用 `Update-Database` 命令,你会得到一个空数据库,所以你无法登录到应用程序因为数据库中没有初始管理用户. 不需要种子数据库时,可以在开发期间使用 `Update-Database` 命令. 但是使用 `.DbMigrator` 应用程序会更简单,你始终可以使用它来迁移模式并为数据库添加种子. - -{{ else if DB == "Mongo" }} - -````json -"ConnectionStrings": { - "Default": "mongodb://localhost:27017/BookStore" -} -```` - -该解决方案被配置为在你的本地计算机中使用 **MongoDB**,因此你需要启动并运行一个MongoDB服务器实例或者将连接字符串更改为另一个MongoDB服务器. - -### 初始化种子数据 - -该解决方案附带一个 `.DbMigrator` 控制台应用程序,该应用程序为初始数据提供了种子. 它对于开发以及生产环境都很有用. - -> `.DbMigrator` 项目有自己的 `appsettings.json`.如果你更改了其他项目的 `appsettings.json`,也应该更改这个. - -右键点击 `.DbMigrator` 并选择 **设置为启动项目**. - -![set-as-startup-project](images/set-as-startup-project.png) - - 按F5(或Ctrl+F5)启动应用程序,你会看到以下输出: - - ![db-migrator-output](images/db-migrator-output.png) - -> 数据库创建后会初始化[种子数据](Data-Seeding.md), 其中包含用于登录的 `admin` 用户. 所以你至少使用 `.DbMigrator` 一次. - -{{ end }} - -### 运行应用程序 - -{{ if UI == "MVC" }} - -{{ if Tiered == "Yes" }} - -确保 `.IdentityServer` 是启动项目,运行应用程序后会在你的浏览器打开一个 **login** 页面. - -> 在Visual Studio中使用Ctrl+F5(而不是F5)运行应用,如果你不用于调试,这会减少启动时间. - -你可以登录,但是不能在这里进入主应用程序,它仅是验证服务器. - -确保 `.HttpApi.Host` 是启动项目,运行应用程序后会在你的浏览器打开一个 **Swagger UI** 页面. - -![swagger-ui](images/swagger-ui.png) - -这里是Web应用程序使用的API应用程序. - -最后确保 `.Web` 是启动项目,运行应用程序后会在你的浏览器打开一个 **welcome** 页面. - -![mvc-tiered-app-home](images/bookstore-home.png) - -点击 **login** 按钮重定向到 `Identity Server` 来登录应用程序. - -![bookstore-login](images/bookstore-login.png) - -{{ else }} - -最后确保 `.Web` 是启动项目,运行应用程序后会在你的浏览器打开一个 **login** 页面. - -> 在Visual Studio中使用Ctrl+F5(而不是F5)运行应用,如果你不用于调试,这会减少启动时间. - -![bookstore-login](images/bookstore-login.png) - -{{ end }} - -{{ else if UI != "MVC" }} - -#### 运行HTTP API Host (服务器端) - -{{ if Tiered == "Yes" }} - -确保 `.IdentityServer` 是启动项目,运行应用程序后会在你的浏览器打开一个 **login** 页面. - -> 在Visual Studio中使用Ctrl+F5(而不是F5)运行应用,如果你不用于调试,这会减少启动时间. - -你可以登录,但是不能在这里进入主应用程序,它仅是验证服务器. - -{{ end }} - -确保 `.HttpApi.Host` 是启动项目,运行应用程序后会在你的浏览器打开一个 **Swagger UI** 页面. - -{{ if Tiered == "No" }} - -> 在Visual Studio中使用Ctrl+F5(而不是F5)运行应用,如果你不用于调试,这会减少启动时间. - -{{ end }} - -![swagger-ui](images/swagger-ui.png) - -你可以看到应用程序的API并进行测试. 更多信息,请参阅[Swagger UI](https://swagger.io/tools/swagger-ui/). - -> ##### Swagger UI 授权 -> -> 大多数的HTTP API都需要身份验证和授权. 如果你要测试授权API, 请手动进入 `/Account/Login` 页面, 输入用户名: `admin` 和密码: `1q2w3E*` 登录到应用程序. 然后你可以访问授权API. - -{{ end }} - -{{ if UI == "NG" }} -#### 运行 Angular 应用程序 (客户端) - -在 `angular` 下打开命令行终端, 输入 `yarn` 命令(我们推荐使用[yarn](https://yarnpkg.com/)包管理, `npm install` 在大多数情况下也可以工作). - -```bash -yarn -``` - -等到所有node模块加载成功, 执行 `yarn start` (或 `npm start`) 命令: - -```bash -yarn start -``` - -等待 `Angular CLI` 使用 `BrowserSync` 启动 `Webpack` dev-server. -它会负责编译你的 `TypeScript`代码, 并自动重新加载浏览器. -完成后 `Angular Live Development Server` 会监听 localhost:4200. -打开你的浏览器并导航到[localhost:4200](http://localhost:4200/). - -![bookstore-login](images/bookstore-login.png) - -{{ end }} - -输入用户名 **admin**,密码 **1q2w3E*** 登录到应用程序,应用程序已经启动并执行,你可以基于此启动模板开始开发应用程序. - -#### 移动开发 - -当你创建一个新的应用程序时. 可以添加`-m react-native`选项以在解决方案中包含 `react-native`项目. 这是一个基础的[React Native](https://reactnative.dev/)启动模板,用于开发与基于ABP的后端集成的移动应用程序. - - -请参阅"[React Native入门](Getting-Started-React-Native.md)"文档了解如何配置和运行React Native应用程序. - -## 下一步是什么? - -[Web应用程序开发教程](Tutorials/Part-1.md) +1. [设置你的开发环境](Getting-Started-Setup-Environment.md) +2. [创建新的解决方案](Getting-Started-Create-Solution.md) +3. [运行解决方案](Getting-Started-Running-Solution.md) \ No newline at end of file diff --git a/docs/zh-Hans/docs-nav.json b/docs/zh-Hans/docs-nav.json index 37f57388c0..74a44c8445 100644 --- a/docs/zh-Hans/docs-nav.json +++ b/docs/zh-Hans/docs-nav.json @@ -5,11 +5,25 @@ "path": "Tutorials/Todo/Index.md" }, { - "text": "入门", + "text": "入门教程", "items": [ { "text": "Web应用程序", - "path": "Getting-Started.md" + "path": "Getting-Started.md", + "items": [ + { + "text": "1: 设置你的开发环境", + "path": "Getting-Started-Setup-Environment.md" + }, + { + "text": "2: 创建新的解决方案", + "path": "Getting-Started-Create-Solution.md" + }, + { + "text": "3: 运行解决方案", + "path": "Getting-Started-Running-Solution.md" + } + ] }, { "text": "控制台应用程序",