




资源介绍
视频数量:38个
总时长:1小时59分
课程介绍:
使用EF Core构建数据驱动的ASP.NET Core应用程序
你是不是有过这样的经历:写业务逻辑写得正顺,结果一想到要和数据库打交道,整个人都不好了。要写多少SQL?要怎么组织代码?怎么避免把所有逻辑都堆在数据访问层里?
其实每个写过后台应用的开发者都绕不开这个问题。数据要存要取,但没人想把自己的代码变成一团乱麻,满是重复的增删改查语句。Entity Framework Core就是来解决这个麻烦的,它让你的代码和数据库之间有个干净的中间层,不用再手写那些枯燥的SQL语句。
这门课会带你从头开始,用ASP.NET Core 10和EF Core构建一个完整的项目叫GloboTicket。这是一个票务系统的API,处理活动、场馆、订单这些业务。整个课程大约两小时,节奏紧凑,动手的成分很足。
先说说EF Core是什么。Entity Framework Core是微软官方的ORM框架,意思是它帮你把对象和数据库表对应起来。你用C写一个类,它帮你生成表结构;你操作对象,它帮你转换成SQL执行。课程会讲清楚Code First和Database First两种开发方式的区别和适用场景,前者是你先写代码再生成数据库,后者是反过来。实际工作中用哪种,取决于你接手的时候数据库是已经存在的,还是需要全新搭建。
建模是第一步。你要做一个票务系统,得想清楚活动是什么、场馆是什么、用户买了什么票、订单和活动怎么关联。课程会教你配置实体属性、设置主键和索引、处理一对一、一对多、多对多这些常见关系。还有个很有意思的点是用Owned Types来处理金额这种复合概念,比如价格加货币单位。GloboTicket的完整领域模型会在这部分完成,你会看到从一张白纸到设计出完整数据结构的思路。
接下来是DbContext,这是EF Core的核心概念。你要理解它的生命周期什么时候创建、什么时候释放、在ASP.NET Core里怎么通过依赖注入来使用。有时候普通的作用域管理不够用,还得用DbContextFactory。课程还会讲怎么配置DbContext、怎么在同一个项目里使用多个数据库上下文,比如一个管业务数据、一个管日志数据。
查询这部分很实用。你写的LINQ查询是怎么变成SQL的,EF Core底层做了什么转换,这些你都看得见。更重要的是课程会讲查询时容易掉的坑,比如N+1问题、延迟加载的副作用。GloboTicket需要实现的查询会一个个演示,包括列表接口的分页、排序、筛选。加载策略也会讲到,什么时候用预加载、显式加载、懒加载,各有利弊。
数据要能查也要能改。EF Core通过变更追踪来知道你改了什么。你从数据库查出来一个对象,改了它的名字,调用保存的时候它只会更新名字那一列,不会傻乎乎地把整行重写一遍。课程会讲清楚实体的五种状态、怎么创建新记录、怎么更新已有数据、怎么删除。更新分两种情况,一种是你一直在DbContext管理下的实体,另一种是你从API接收的断开连接的实体,处理方式不一样。删除的时候会讲到软删除,批量操作和并发冲突的处理。事务部分会告诉你什么时候SaveChanges自动帮你管理事务,什么时候你需要手动控制。
数据库结构不是一成不变的。业务在长,数据库也要跟着变。迁移就是来解决这个问题的。每次你想改表结构,不是直接在生产数据库上敲ALTER TABLE,而是写迁移文件,让EF Core帮你把改动应用到各个环境。课程会演示迁移怎么生成、怎么应用、怎么给数据库填初始数据。还会讲到实际操作中迁移怎么管理,比如已经有数据的表怎么加新列。如果你要接手一个老项目,数据库已经存在,EF Core也能反向工程,从现有数据库生成代码。
最后会讲数据访问层的设计模式。很多人写了几年CRUD,始终觉得代码不好维护,问题往往出在这一层。仓库模式和Unit of Work模式是常见的解决方案,课程会手把手演示怎么实现仓库类、怎么把数据库操作封装起来。然后是测试,数据访问层怎么写单元测试,怎么用TestContainers跑真实的SQL Server容器而不是依赖内存数据库,这样测出来的结果更可靠。
学完这门课,你得到的不只是会调用EF Core的API,而是真正理解它底层是怎么运作的。变更追踪、查询编译、迁移生成,这些机制理解了,你才能在遇到奇怪问题的时候不慌,才能写出高效的数据访问代码。课程代码可以从GitHub仓库下载,每个模块都有起始版本和完成版本,方便你跟着练。