我们使用 Visual Studio 或代码编辑器打开解决方案`ProductManagement.sln`、创建数据库并运行 Web 应用程序。您将看到如下图所示的解决方案结构:
![](https://img.kancloud.cn/60/ad/60ad23a2ff57e0d3e138223e7c0e1e9a_838x580.png)
该解决方案是包含多个项目的分层结构。测试文件夹包含测试这些对应层的项目。这些项目中有一些是类库,有一些是可执行应用程序:
* `ProductManagement.Web`是 Web 应用程序。
* `ProductManagement.DbMigrator`用于应用数据库迁移和种子数据初始化。
在创建数据库之前,您可能需要检查并更改数据库连接字符串。
## 连接字符串
连接字符串在`ProductManagement.Web`和`ProductManagement.DbMigrator`项目的`appsettings.json`文件中定义,包括服务器、数据库名称和凭据。如以下代码片段所示:
```
"ConnectionStrings": {
"Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=ProductManagement;Trusted_Connection=True"
}
```
默认连接字符串使用`LocalDb`,一个轻量级、与 SQL Server 兼容的数据库。它安装在 Visual Studio 中。如果要连接到另一个 SQL Server 实例,需要更改连接字符串。
## 创建数据库
该解决方案使用 EF Core 的 Code First 进行数据库迁移。因此,我们可以使用标准`Add-Migration`和`Update-Database`命令来管理数据库更改。
`ProductManagement.DbMigrator`是一个控制台应用程序,可简化在开发和生产环境中创建和迁移数据库。它还提供数据初始化,比如创建默认登录使用到的`admin`用户和角色。
右键单击该`ProductManagement.DbMigrator`项目并选择**设置为启动项目**命令。然后,使用*Ctrl*+*F5*运行项目,无需调试即可运行。
**关于初始迁移**
如果您使用的是 Visual Studio 以外的 IDE(例如 JetBrains Rider),则首次运行可能会遇到问题。在这种情况下,可以在项目`ProductManagement.DbMigrator`目录中打开一个命令行终端并执行`dotnet run`命令。下次,您就可以像往常一样在 IDE 中运行它。
数据库已经准备好了,我们可以运行应用程序来查看界面 UI了。
## 运行 Web 应用程序
设置`ProductManagement.Web`为启动项目,并使用*Ctrl*+*F5*运行它(无需调试即可启动)。
>[success] 温馨提示:*Ctrl*+*F5*,不调试运行
除非调试它们,否则强烈建议在不调试的情况下运行应用程序,因为这样会快得多。
接着会打开一个登录页面,如以下屏幕截图所示:
![](https://img.kancloud.cn/4d/0c/4d0c3d9a13d3359b4efe3def411acc35_1196x1005.png)
默认用户名是`admin`,默认密码是`1q2w3E*`。可以在登录之后进行更改。
ABP 是一个模块化框架,启动解决方案已经安装了基础模块。在开始构建您的应用程序之前,最好先探索一下预构建的模块功能。
- 前言
- 第一部分
- 第1章 现代软件开发和 ABP 框架
- 企业级 Web 开发的挑战
- ABP框架的能力清单
- 第2章 ABP框架入门
- 安装 ABP CLI
- 创建新解决方案
- 运行解决方案
- 探索预构建模块
- 第3章 逐步开发开发ABP应用
- 创建解决方案
- 定义领域对象
- EFCore和数据库映射
- 定义应用服务
- 测试产品
- 产品列表
- 创建产品
- 编辑产品
- 删除产品
- 第4章 探索 EventHub解决方案
- 应用介绍
- 架构探索
- 方案运行
- 第二部分
- 第5章 探索ABP基础架构
- 了解模块化
- 使用依赖注入系统
- 配置应用程序
- 实现选项模式
- 日志系统
- 第6章 数据访问基础架构
- 定义实体
- 定义仓储库
- EF Core集成
- 了解 UoW
- 第7章 探索横切关注点
- 认证授权
- 用户验证
- 异常处理
- 第8章 体验 ABP 的功能和服务
- 获取当前用户
- 使用数据过滤
- 控制审计日志
- 缓存数据
- 本地化用户界面
- 第三部分
- 第9章 理解领域驱动设计
- 介绍 DDD
- 构建基于 DDD 的 解决方案
- 处理多个应用程序
- 了解执行流程
- DDD的通用原则
- 第10章 领域层 Domain
- 领域事件案例分析
- 聚合和实体的设计原则和实践
- 实现领域服务
- 落地存储库
- 构建规约(Specification)
- 领域事件
- 第11章 应用层 Application
- 落地应用服务
- 设计 DTO
- 理解各层的职责
- 第四部分
- 第12章 MVC/Razor 页面
- 主题系统
- 绑定和压缩
- 导航菜单
- Bootstrap标签助手
- 创建表单并验证
- 使用模态窗口
- 使用JS API
- 调用HTTP API
- 第13章 Blazor WebAssembly UI
- 什么是Blazor
- ABP Blazor UI
- 验证用户身份
- 理解主题系统
- 使用菜单
- 使用基本服务
- 使用UI服务
- 消费HTTP API
- 使用全局脚本和样式
- 第14章 HTTP API 和实时服务
- 构建HTTP API
- 使用HTTP API
- 使用SignalR
- 第五部分
- 第15章 落地模块化
- 理解模块化
- 构建支付模块
- 安装模块
- 第16章 实现多租户
- 理解多租户
- 多租户基础设施
- 使用功能系统
- 何时使用多租户
- 第17章 构建自动化测试
- 了解ABP测试基础设施
- 构建单元测试
- 构建集成测试