《深入浅出 ASP.NET Core》PDF电子书免费下载

作者:  梁桐铭

出版社: 人民邮电出版社

出版年: 2020年09月

ISBN: 9787115541093

~~滚到底部有网盘下载链接~~

内容简介

目录

第 一部分

第 1章 编程语言和 .NET的关系 2

1.1 编程语言 2

1.2 编程语言中的C#、 F#和VB.NET 2

1.3 C#与.NET 3

1.4 小结 3

第 2章 .NET平台 4

2.1 回顾.NET发展历史 4

2.1.1 .NET Framework 4

2.1.2 .NET Framework与Java 5

2.1.3 .NET的跨平台之路 5

2.2 Mono神奇的跨平台解决方案 6

2.3 .NET Standard 6

2.4 .NET Core 7

2.4.1 .NET Core的特点 7

2.4.2 .NET Core 3.1 8

2.5 .NET Core与其他平台 8

2.5.1 .NET Core与.NET Framework 8

2.5.2 .NET Core与Mono 8

2.5.3 .NET Core与ASP .NET Core 8

2.6 ASP .NET的发展历程 9

2.7 ASP.NET Core的未来发展 9

2.8 小结 10

第3章 .NET 5的统一整合方案 11

3.1 进化中的.NET 11

3.2 .NET 5 (.NET Core vNext) 12

3.3 .NET Core实现真正的统一开发平台 13

3.4 小结 14

第4章 创建ASP.NET Core项目 15

4.1 ASP.NET Core 15

4.2 ASP.NET Core的特性 15

4.3 配置计算机的开发环境 17

4.3.1 下载并安装Visual Studio 2019 17

4.3.2 下载并安装.NET Core SDK 18

4.4 创建ASP.NET Core Web程序 18

4.5 内置的ASP.NET Core模板说明 20

4.6 小结 21

第5章 ASP.NET Core项目启动流程 23

5.1 ASP.NET Core项目文件 23

5.2 ASP.NET Core项目的入口 25

5.3 ASP.NET Core中的进程内与进程外托管模型 26

5.3.1 进程内托管 27

5.3.2 Kestrel 28

5.3.3 CLI 28

5.4 ASP.NET Core进程外托管 29

5.5 探讨几个问题 30

5.6 小结 31

第6章 ASP.NET Core中的配置文件 33

6.1 启动配置信息 33

6.2 通过GUI来设置launchSettings文件 35

6.3 ASP.NET Core appsettings.json文件 36

6.3.1 访问配置信息 37

6.3.2 appsettings.json 39

6.3.3 用户机密 39

6.3.4 环境变量 41

6.3.5 命令行参数 41

6.4 ASP.NET Core IConfiguration服务与依赖注入 42

6.5 小结 44

第7章 ASP.NET Core中的中间件及其工作原理 45

7.1 中间件 45

7.2 中间件在ASP.NET Core中的工作原理 47

7.3 配置ASP.NET Core请求处理管道 48

7.4 Configure()代码解析 49

7.4.1 中间件掌握测试 49

7.4.2 中间件传递 50

7.4.3 实践中间件的工作流程 50

7.5 小结 52

第8章 ASP.NET Core中的静态文件中间件 54

8.1 添加静态文件中间件 54

8.2 支持默认文件 55

8.3 自定义默认文件 56

8.4 UseFileServer中间件 56

8.5 小结 57

第9章 ASP.NET Core开发人员异常页面 58

9.1 UseDeveloperExceptionPage中间件 58

9.2 自定义UseDeveloperExceptionPage中间件 60

9.3 UseDeveloperExceptionPage中间件如何工作 60

9.4 ASP.NET Core中的环境变量配置 61

9.5 配置ASPNETCORE_ENVIRONMENT变量 62

9.6 IWebHostEnvironment服务中的常用方法 64

9.7 小结 65

第二部分

第 10章 详解ASP.NET Core MVC的设计模式 68

10.1 什么是MVC 68

10.1.1 MVC如何工作 69

10.1.2 Model 70

10.1.3 View 71

10.1.4 Controller 71

10.2 在ASP.NET Core中安装MVC 73

10.2.1 在ASP.NET Core中配置MVC 73

10.2.2 添加HomeController 74

10.3 AddMvc()和AddMvcCore()的源代码解析 75

10.4 小结 77

第 11章 依赖注入与Student模型 78

11.1 依赖注入 78

11.2 详细了解ASP.NET Core中的依赖注入 80

11.3 使用依赖注入注册服务 81

11.4 小结 83

第 12章 从Controller传递内容协商数据到View 84

12.1 Controller请求及相应流程说明 84

12.1.1 从Controller中返回JSON数据 85

12.1.2 安装Fiddler 86

12.2 在Controller中实现内容协商 86

12.3 从Controller返回View 89

12.3.1 MVC中的View 89

12.3.2 视图文件夹结构 90

12.3.3 视图发现 90

12.3.4 View()重载方法 93

12.4 自定义视图发现 93

12.4.1 指定视图文件路径 93

12.4.2 相对视图文件路径 94

12.4.3 其他View()重载方法 94

12.5 从Controller传递数据到View 95

12.5.1 数据从Controller传递到View的方法 95

12.5.2 使用ViewData将数据从Controller传递到View 95

12.5.3 使用ViewBag将数据从Controller传递到View 97

12.5.4 ViewData和ViewBag的对比 98

12.5.5 在ASP.NET Core MVC中创建一个强类型视图 98

12.6 小结 100

第 13章 完善MVC框架内容 102

13.1 为什么需要在ASP.NET Core MVC中使用ViewModel 102

13.1.1 ViewModel示例 103

13.1.2 在Controller中使用ViewModel 103

13.1.3 在视图中使用ViewModel 104

13.2 在ASP.NET Core MVC中实现List视图 104

13.2.1 修改IStudentRepository中的代码 105

13.2.2 修改MockStudentRepository中的代码 105

13.2.3 修改HomeController中的代码 106

13.2.4 视图Index.cshtml中代码的变化 106

13.3 为什么需要布局视图 107

13.3.1 ASP.NET Core MVC中的布局视图 108

13.3.2 创建布局视图 109

13.3.3 使用布局视图 109

13.4 布局页面中的节点 110

13.4.1 布局页面示例 110

13.4.2 渲染节点 111

13.4.3 使布局部分可选 111

13.4.4 节点的使用 112

13.5 什么是_ViewStart.cshtml文件 113

13.5.1 ASP.NET Core MVC中的_ViewStart.cshtml文件 113

13.5.2 _ViewStart.cshtml文件支持分层 113

13.5.3 逻辑判断调用布局视图 114

13.5.4 修改视图 114

13.6 ASP.NET Core MVC中的_ViewImports.cshtml文件 116

13.7 小结 117

第 14章 ASP.NET Core MVC中的路由 118

14.1 ASP.NET Core MVC中的默认路由 119

14.2 UseMvcWithDefaultRoute()方法中的代码 120

14.3 ASP.NET Core MVC中的属性路由 122

14.3.1 属性路由示例 123

14.3.2 属性路由参数 123

14.3.3 属性路由可选参数 124

14.3.4 控制器和操作方法名称 125

14.3.5 属性路由支持多层 125

14.3.6 在属性路由中自定义路由 128

14.3.7 常规路由与属性路由对比 129

14.4 ASP.NET Core中新增的路由中间件 129

14.4.1 路由中间件UseRouting 130

14.4.2 路由中间件UseEndpoints 131

14.5 LibMan轻量级包管理器 133

14.5.1 使用LibMan安装Bootstrap 133

14.5.2 libman.json文件 134

14.5.3 清理和还原客户端库 134

14.5.4 卸载或更新客户端库 134

14.5.5 libman.json文件说明 135

14.5.6 在网站中自定义CSS样式表 136

14.6 在ASP.NET Core应用程序中使用Bootstrap 136

14.6.1 Details.cshtml视图优化 137

14.6.2 Index.cshtml视图优化 137

14.7 小结 139

第 15章 ASP.NET Core中的TagHelper 140

15.1 导入内置TagHelper 140

15.1.1 使用TagHelper生成Link链接 140

15.1.2 TagHelper中的Link标签 141

15.2 为什么要使用TagHelper 141

15.3 Image TagHelper 144

15.3.1 浏览器缓存 145

15.3.2 禁用浏览器缓存 145

15.3.3 HTTP状态码中的200与302 146

15.3.4 ASP.NET Core中的Image TagHelper 146

15.3.5 验证Image TagHelper 147

15.4 ASP.NET Core中的Environment TagHelper 148

15.4.1 设置应用程序环境的名称 148

15.4.2 如果CDN “挂了”怎么办 149

15.5 使用Bootstrap给项目添加导航菜单 150

15.6 Form TagHelpers提交学生信息 153

15.6.1 场景描述 153

15.6.2 Form TagHelper 154

15.6.3 Input TagHelper 154

15.6.4 Label TagHelper 155

15.6.5 Select TagHelper 155

15.6.6 Create.cshtml中基本的HTML代码 156

15.6.7 Bootstrap优化后的Create.cshtml的代码 158

15.7 小结 159

第 16章 ASP.NET Core中的模型绑定与模型验证 160

16.1 ASP.NET Core中模型绑定的简单例子 160

16.2 在IStudentRepository接口中添加Add() 方法 162

16.2.1 在MockStudentRepository类中实现Add() 方法 163

16.2.2 HttpGet与HttpPost 163

16.2.3 运行结果 165

16.3 ASP.NET Core中的模型验证 166

16.3.1 模型验证示例 166

16.3.2 ModelState.IsValid属性验证 168

16.3.3 在视图中显示模型验证错误 168

16.3.4 自定义模型验证错误消息 169

16.3.5 ASP.NET Core内置模型验证属性 169

16.3.6 显示属性 169

16.3.7 使用多个模型验证属性 170

16.3.8 自定义模型验证错误的颜色 170

16.4 ASP.NET Core中的Select选择器验证 171

16.4.1 HTML页面中的选择列表 171

16.4.2 使选择列表成为必填 172

16.4.3 让选择列表成为真正的必需验证 173

16.5 深入了解依赖注入3种服务的不同 174

16.5.1 IStudentRepository接口 174

16.5.2 Student类 175

16.5.3 MockStudentRepository仓储服务 175

16.5.4 HomeController 176

16.5.5 创建学生信息 177

16.5.6 完善_ViewImports.cshtml 178

16.6 验证依赖注入服务 179

16.6.1 AddSingleton()方法 179

16.6.2 AddScoped()方法 180

16.6.3 AddTransient()方法 181

16.6.4 Scoped服务、 Transient服务与Singleton服务 181

16.7 小结 182

第 17章 EntityFramework Core数据访问与仓储模式 183

17.1 为什么要使用ORM 183

17.1.1 EF Core Code First模式 184

17.1.2 EF Core Database First模式 185

17.1.3 EF Core所支持的数据库 185

17.2 单层Web应用和多层Web应用的区别 186

17.2.1 单层Web应用 186

17.2.2 多层Web应用程序——三层架构 187

17.2.3 多层Web应用程序——领域驱动设计架构 188

17.3 Microsoft.AspNetCore.App包 190

17.4 安装Entity Framework Core 192

17.4.1 在类库项目中安装NuGet包 193

17.4.2 Entity Framework Core中的DbContext 194

17.4.3 在应用程序中使用DbContext 194

17.4.4 Entity Framework Core中的DbSet 195

17.5 在Entity Framework Core中使用SQL Server 195

17.5.1 AddDbContext()和AddDbContextPool()方法之间的区别 196

17.5.2 UseSqlServer()扩展方法 196

17.5.3 ASP.NET Core中的数据库连接字符串 196

17.6 ASP.NET Core中的仓储模式 197

17.6.1 仓储模式简介 197

17.6.2 仓储模式中的接口 198

17.6.3 修改IStudentRepository接口 198

17.6.4 仓储模式中的内存实现 199

17.6.5 Repository模式——SQL Server数据库实现 201

17.6.6 选择合适的仓储实现模式 202

17.6.7 仓储模式的优点 203

17.7 Entity Framework Core迁移功能 203

17.7.1 EF Core中的迁移 204

17.7.2 常用的Entity Framework Core迁移命令 205

17.7.3 在Entity Framework Core中创建迁移 205

17.7.4 在Entity Framework Core中更新数据库 206

17.7.5 Entity Framework Core中的种子数据 207

17.7.6 如何启用种子数据 207

17.7.7 更改现有的数据库种子数据 209

17.7.8 DbContext类保持“干净” 210

17.8 在ASP.NET Core中同步领域模型与数据库架构 211

17.8.1 给学生增加头像字段 211

17.8.2 Migrations文件夹中的文件说明 212

17.8.3 _EFMigrationsHistory表的使用 212

17.8.4 如何删除已应用的迁移记录 212

17.8.5 删除已应用于数据库的迁移 213

17.9 小结 213

第 18章 学生头像上传与信息修改 214

18.1 修改Student模型类 215

18.1.1 视图模型——StudentCreateViewModel 215

18.1.2 更新Create视图中的代码 216

18.1.3 更新Create()操作方法的代码 219

18.1.4 学生详情视图页面代码 220

18.1.5 学生列表视图页面代码 221

18.2 在ASP.NET Core MVC中完成上传多个文件 222

18.2.1 StudentCreateViewModel文件 223

18.2.2 更新Create视图的代码 223

18.2.3 修改Create()操作方法 226

18.3 ASP.NET Core中的学生编辑视图 228

18.3.1 导航到编辑视图 228

18.3.2 编辑视图模型 229

18.3.3 Edit() 操作方法 230

18.3.4 编辑视图页面 230

18.3.5 完成HttpPost的Edit()操作方法 232

18.4 枚举的扩展方法实现 235

18.5 小结 237

第 19章 404错误页与异常拦截 238

19.1 HTTP状态码中的4××和5×× 238

19.1.1 ASP.NET Core中的404错误 239

19.1.2 404错误信息的视图代码 239

19.2 统一处理ASP.NET Core中的404错误 240

19.2.1 404错误的类型 241

19.2.2 ASP.NET Core中的404错误示例 241

19.3 处理失败的HTTP状态码 242

19.3.1 UseStatusCodePages中间件 242

19.3.2 UseStatusCodePagesWithRedirects中间件 243

19.3.3 添加ErrorController 244

19.3.4 添加NotFound视图 245

19.4 UseStatusCodePagesWithRedirects与UseStatusCodePagesWithReExecute 245

19.4.1 UseStatusCodePagesWithRedirects中间件说明 246

19.4.2 UseStatusCodePagesWithRedirects请求处理流程 246

19.4.3 使用UseStatusCodePagesWithReExecute请求处理流程 247

19.5 ASP.NET Core中的全局异常处理 249

19.5.1 ASP.NET Core中的UseDeveloperExceptionPage中间件 249

19.5.2 ASP.NET Core中的非开发环境异常信息 250

19.5.3 ASP.NET Core中的异常处理 251

19.5.4 调整Edit()方法中的错误视图 253

19.6 小结 255

第 20章 ASP.NET Core中的日志记录 256

20.1 ASP.NET Core中的默认日志 256

20.2 ASP.NET Core中的日志记录提供程序 257

20.2.1 ASP.NET Core内置日志记录提供程序 257

20.2.2 ASP.NET Core的第三方日志记录提供程序 258

20.2.3 ASP.NET Core中默认的日志记录提供程序 258

20.2.4 appsettings.json文件中的LogLevel 259

20.3 在ASP.NET Core中实现记录异常信息 261

20.3.1 Error和NotFound视图修改 262

20.3.2 在ASP.NET Core中记录异常信息 263

20.3.3 在ASP.NET Core中使用NLog记录信息到文件中 267

20.3.4 在ASP.NET Core中使用NLog 267

20.4 在ASP.NET Core中LogLevel配置及过滤日志信息 270

20.4.1 日志等级LogLevel枚举 270

20.4.2 ILogger方法 271

20.4.3 在ASP.NET Core中使用日志过滤 272

20.4.4 按日志类别(Log Category)和日志记录提供程序进行日志筛选 275

20.4.5 特定环境变量中appsettings.json文件的LogLevel配置 277

20.5 小结 277

第三部分

第 21章 从零开始学ASP.NET Core Identity框架 280

21.1 ASP.NET Core Identity介绍 280

21.2 使用ASP.NET Core Identity注册新用户 283

21.2.1 RegisterViewModel视图模型 284

21.2.2 账户控制器 284

21.2.3 注册视图中的代码 285

21.2.4 添加注册按钮 286

21.3 UserManager和SignInManager服务 286

21.3.1 ASP.NET Core Identity中对密码复杂度的处理 288

21.3.2 ASP.NET Core Identity密码默认设置 289

21.3.3 覆盖ASP.NET Core身份中的密码默认设置 290

21.3.4 修改中文提示的错误信息 291

21.4 登录状态及注销功能的实现 294

21.5 ASP.NET Core Identity中的登录功能实现 295

21.5.1 LoginViewModel登录视图模型 295

21.5.2 登录视图的代码 296

21.5.3 AccountController中的Login()操作方法 297

21.5.4 会话Cookie与持久性Cookie 298

21.6 小结 299

第 22章 授权与验证的关系 300

22.1 ASP.NET Core中的Authorize属性 300

22.1.1 Authorize属性示例 300

22.1.2 ASP.NET Core中的AllowAnonymous属性 301

22.1.3 全局应用Authorize属性 302

22.2 登录后重定向到指定URL 303

22.2.1 ASP.NET Core中的ReturnUrl 303

22.2.2 ReturnUrl查询字符串示例 303

22.2.3 登录后重定向到ReturnUrl 304

22.3 开放式重定向攻击 305

22.3.1 什么是开放式重定向漏洞 305

22.3.2 开放式重定向漏洞示例 305

22.4 ASP.NET Core中的客户端验证 307

22.4.1 服务器端验证示例 307

22.4.2 客户端验证 308

22.4.3 什么是客户端隐式验证 310

22.4.4 客户端验证如何在ASP.NET Core中工作 311

22.4.5 隐式验证在ASP.NET Core中失效 312

22.5 在ASP.NET Core中进行远程验证 312

22.5.1 远程验证示例 313

22.5.2 ASP.NET Core远程属性 314

22.5.3 ASP.NET Core Ajax失效 315

22.6 ASP.NET Core中的自定义验证属性 315

22.6.1 自定义验证属性示例 315

22.6.2 在ASP.NET Core中使用自定义验证属性 316

22.7 小结 317

第 23章 角色管理与用户扩展 318

23.1 扩展IdentityUser类 319

23.1.1 修改AppDbContext中的参数 321

23.1.2 生成新迁移记录向AspNetUsers表中添加字段 321

23.1.3 在AspNetUsers表中保存自定义数据 322

23.1.4 AccountController类中Register()操作方法的修改 323

23.1.5 AllowAnonymous匿名属性的使用 324

23.2 ASP.NET Core中的角色管理 324

23.2.1 ASP.NET Core中的RoleManager 324

23.2.2 在AdminController中添加创建新角色的代码 325

23.2.3 创建角色视图模型 326

23.2.4 创建角色视图 326

23.3 在ASP.NET Core中显示所有角色列表 328

23.4 编辑ASP.NET Core中的角色 331

23.4.1 编辑角色视图模型 332

23.4.2 编辑角色操作方法 333

23.4.3 编辑角色视图 335

23.5 角色管理中的用户关联关系 338

23.5.1 Identity中的AspNetUserRoles数据库表关联关系 339

23.5.2 EditUsersInRole的HttpGet操作方法 339

23.5.3 EditUsersInRole的HttpPost操作方法 340

23.5.4 EditUsersInRole视图 341

23.6 小结 343

第 24章 角色授权与用户管理 344

24.1 基于角色的授权 344

24.1.1 授权属性的多个实例 345

24.1.2 基于角色授权的控制器操作方法 345

24.2 添加授权中间件UseAuthorization 346

24.3 在菜单栏上显示或隐藏管理 347

24.4 ASP.NET Core Identity中的拒绝访问功能 348

24.4.1 AccessDenied()操作方法 348

24.4.2 AccessDenied视图代码 349

24.5 获取Identity中的用户列表 349

24.5.1 UserManager服务的用户访问 350

24.5.2 ASP.NET Core列表用户视图 351

24.5.3 管理导航菜单 353

24.5.4 修改Register()方法 354

24.5.5 下拉菜单功能失效 355

24.6 编辑Identity中的用户 355

24.6.1 编辑用户视图 355

24.6.2 EditUser()的操作方法 356

24.6.3 EditUser视图文件 358

24.7 NotFound视图异常 360

24.8 Identity中删除的用户功能 362

24.8.1 使用GET请求删除数据 362

24.8.2 使用POST请求删除数据 362

24.8.3 DeleteUser()方法 363

24.9 ASP.NET Core中的确认删除功能 364

24.9.1 浏览器确认对话框 364

24.9.2 是和否删除按钮 364

24.9.3 将confirmDelete()方法添加到视图中 366

24.10 删除ASP.NET CoreIdentity中的角色 367

24.11 小结 369

第 25章 EF Core中的数据完整性约束 370

25.1 EF Core中的数据完整性约束 370

25.2 优化生产环境中的自定义错误视图 374

25.2.1 ErrorController类 376

25.2.2 优化Error.cshtml 376

25.3 小结 378

第 26章 ASP.NET Core中的声明授权 379

26.1 Identity中的用户角色 379

26.1.1 视图模型 380

26.1.2 ManageUserRoles()方法 380

26.1.3 ManageUserRoles视图文件 382

26.2 启用MARS与模型绑定失效 383

26.2.1 为什么不使用foreach 384

26.2.2 for循环与foreach循环的异同点 387

26.3 声明授权 388

26.3.1 ClaimsStore与UserClaimsViewModel类 388

26.3.2 ManageUserClaims()操作方法 389

26.3.3 ManageUserClaims视图文件 391

26.4 小结 393

第 27章 RBAC与CABC 394

27.1 RBAC 394

27.2 CBAC 395

27.3 角色与策略的结合 396

27.4 在MVC视图中进行角色与声明授权 397

27.5 AccessDenied视图的路由配置修改 399

27.6 策略授权中的ClaimType和ClaimValue 402

27.7 使用委托创建自定义策略授权 404

27.7.1 自定义复杂授权需求 406

27.7.2 自定义授权需求和处理程序 407

27.7.3 自定义需求的授权处理程序示例 408

27.7.4 多个自定义授权处理程序 411

27.8 小结 413

第 28章 Identity的账户中心的设计 414

28.1 第三方登录身份提供商 414

28.1.1 第三方登录身份提供商如何在ASP.NET Core中工作 415

28.1.2 创建Azure OAuth凭据--——客户端ID和客户端密钥 416

28.1.3 在ASP.NET Core中启用Microsoft身份验证 418

28.1.4 集成GitHub身份验证登录 425

28.2 用户机密 429

28.3 验证账户信息安全 430

28.3.1 验证电子邮箱的好处 431

28.3.2 阻止登录未验证的用户登录 431

28.3.3 电子邮箱确认令牌 435

28.3.4 第三方登录的电子邮箱确认令牌 439

28.3.5 激活用户邮箱 442

28.4 忘记密码功能 444

28.5 重置密码功能 446

28.6 小结 449

第 29章 解析部分ASP.NET Core Identity源代码 450

29.1 解析ASP.NET Core Identity中Token的生成与验证 450

29.2 自定义令牌类型及令牌有效期 454

29.3 ASP.NET Core中Data Protection的加密和解密示例 456

29.4 在ASP.NET Core中添加更改密码功能 461

29.5 为第三方账户添加密码 464

29.6 ASP.NET Core中的账户锁定 468

29.7 小结 472

第四部分

第30章 架构 474

30.1 架构简介 474

30.2 学校管理系统架构设计 475

30.3 EntityFramework Core中的实体关系 476

30.4 当前架构 480

30.5 小结 481

第31章 仓储模式的实践 482

31.1 泛型仓储的实现 482

31.2 异步编码与同步编码 483

31.3 IRepository接口的设计实现 484

31.4 RepositoryBase仓储代码的实现 489

31.5 小结 495

第32章 重构学生管理功能 496

32.1 修改HomeController中的代码 496

32.2 学生列表排序功能 505

32.3 模糊查询 507

32.4 一个简单分页的实现 509

32.5 小结 514

第33章 课程列表与分组统计功能 515

33.1 泛型分页 515

33.2 迁移数据信息 521

33.3 课程列表 526

33.4 分部视图 530

33.5 学生统计信息 532

33.6 Razor条件运行时编译 534

33.7 小结 535

第34章 复杂数据类型及自动依赖注入 536

34.1 创建相关实体信息 537

34.1.1 修改Course实体信息 538

34.1.2 创建学院与调整学生课程信息 539

34.2 更新数据库上下文及初始化内容 542

34.3 服务之间的自动注册 552

34.4 小结 555

第35章 课程与教师的CRUD 556

35.1 EF Core中预加载的使用 556

35.2 较为复杂的预加载的使用 558

35.3 编辑课程功能 569

35.3.1 编辑课程信息 572

35.3.2 课程信息的详情页 575

35.3.3 删除课程信息 577

35.4 编辑教师功能 578

35.4.1 添加教师信息 583

35.4.2 删除教师信息 586

35.5 优化目录结构 587

35.6 小结 588

第36章 处理并发冲突 589

36.1 并发冲突 589

36.1.1 悲观并发(悲观锁) 590

36.1.2 乐观并发(乐观锁) 591

36.2 添加Department的相关类 591

36.2.1 添加DepartmentsService 592

36.2.2 学院列表功能 593

36.2.3 添加详情视图 597

36.2.4 编辑学院信息功能 602

36.3 EF Core中的并发控制 605

36.4 小结 609

第37章 EF Core中的继承与原生SQL语句使用 610

37.1 继承 610

37.1.1 实现TPH继承 611

37.1.2 执行数据库迁移 613

37.2 执行原生SQL语句 614

37.2.1 DbSet.FromSqlRaw的使用 614

37.2.2 Database.ExecuteSqlComma的使用 615

37.2.3 执行原生SQL语句实现更新 616

37.3 小结 619

第38章 EF Core 中的数据加载与关系映射 620

38.1 EF Core中的数据加载 620

38.1.1 显式加载 620

38.1.2 延迟加载 621

38.1.3 3种加载形式的性能区别 623

38.2 Fluent API与数据注释 624

38.3 Entity Framework Core中的Code First关系映射约定 625

38.3.1 一对一关联关系 626

38.3.2 一对多关联关系 627

38.3.3 多对多关联关系 631

38.4 小结 632

第五部分

第39章 ASP.NET Core中的Web API 634

39.1 IoT与RESTful服务 634

39.2 添加Web API服务 635

39.3 安装Postman并调试Web API服务 639

39.3.1 测试POST请求 639

39.3.2 测试GET请求 640

39.3.3 测试PutTodoItem()方法 642

39.3.4 测试DeleteTodoItem()方法 644

39.3.5 404和400异常 644

39.4 图形可视化的Web API帮助页 646

39.4.1 Swagger/OpenAPI 646

39.4.2 Swashbuckle.AspNetCore入门 646

39.4.3 添加并配置Swagger中间件 647

39.4.4 获取swagger.json失败 648

39.4.5 调试Swagger UI 650

39.4.6 调用SwaggerGen API 654

39.5 小结 657

第40章 实践多层架构体系 658

40.1 领域驱动设计的分层结构 658

40.2 重构MockSchoolManagement项目 659

40.2.1 添加所需类库 661

40.2.2 添加依赖引用关系 662

40.3 迁移各类库 663

40.3.1 各个项目文件中的引用 664

40.3.2 类库效果图 665

40.3.3 多程序集的依赖注入 667

40.3.4 重新生成迁移记录及生成SQL脚本 668

40.4 小结 669

第41章 部署与发布 670

41.1 部署至IIS 670

41.1.1 IIS的安装和配置 670

41.1.2 安装ASP.NET Core托管模块 672

41.1.3 启用Web Deploy 672

41.1.4 创建IIS站点 675

41.1.5 使用Visual Studio将ASP.NET Core发布到IIS站点 676

41.2 部署至Ubuntu 678

41.2.1 Ubuntu中安装.NET Core 679

41.2.2 安装Nginx 679

41.2.3 编译与发布 680

41.3 在Docker中调试运行ASP.NET Core 682

41.3.1 安装Docker 682

41.3.2 添加Dockerfile文件 683

41.4 云原生Azure Web App 685

41.5 小结 689

第42章 ASP.NET Core 2.2到ASP. NET Core 3.1的迁移指南 690

42.1 升级至ASP.NET Core 3.1 690

42.1.1 修改项目启动 692

42.1.2 修改Startup 693

42.2 迁移升级后的看法 693

42.3 Visual Studio 2019插件推荐 694

42.4 小结 696

显示部分信息

下载价格:免费
立即下载
登入/注册
知识就是力量
没有账号? 忘记密码?