深入 EF Core 视频教程

  • 共 61 个视频教程

第61期-EfCore3.0中断性变更

  • 2019-11-01 23:20:19
  • 33 分钟

现有应用程序升级到 3.0 版本时,有的 API 更改和行为可能导致程序中断,针对每个变化点的旧行为、新行为、为什么、缓解措施和影响范围,不再客户端上计算 LINQ 查询,EF Core 3.0 面向 .NET Standard 2.1 标准,之前版本中的 FromSql、ExecuteSql 和 ExecuteSqlAsync 已重命名,查询类型与实体类型合并,级联删除立即发生,元数据 API 已更改。

2909次播放

第60期-EFCore3.0新特性

  • 2019-11-01 23:05:13
  • 25 分钟

EF Core 3.0 新版版本中包含多个重大变更,可基于 LINQ 语句检查并评估客户端执行,使用 JOIN 合并 Include 生成的 SQL 指令,避免 N+1 查询,支持 C# 8.0 语言中的异步流和可空引用类型,异步查询结果可用新的标准 IAsyncEnumerable<T> 接口公开,并可通过 await foreach 使用,新增 IDbCommandInterceptor 数据库操作拦截器,支持反向工程无主键的表和视图,.NET Core 3.0 中还可以直接运行原始版本的 EF 6.3+ 框架。

2232次播放

第59期-性能优化方案

  • 2019-10-29 21:21:33
  • 38 分钟

深入理解性能优化,方案与建议,优先使用 AddDbContextPool 注入上下文实例池, 使用 EF.CompileQuery 显式编译查询,多活动结果集 MARS 数据库连接复用,使用 Async 异步方法提高吞吐量,设置批处理语句,创建索引提高查询性能,避免 N+1 查询,跟踪与非跟踪查询,关闭 DetectChanges 状态同步,数据缓存,使用 EF.Functions.Link 构建模糊查询,标记 DbFunctionAttribute 映射标量函数方法存根。

3304次播放

第58期-数据库分区分表分库与读写分离

  • 2019-10-24 01:15:24
  • 37 分钟

将 EF Core 2.2 项目升级到 3.0 版本,使用索引优化查询性能,评估执行计划,数据库引擎优化顾问,使用分区文件将数据存储至多个物理区块,减少磁盘读写开销,提高吞吐量,分表设计将表按指定的规则分解成多个具有独立存储空间的实体表,分库设计可单独服务器集群部署,更好提高大数据扩展能力,对于时效性不高的数据,可以通过读写分离缓解数据库压力,主从复制,微软 SQL Server 提供的复制、日志传送、镜像和 AlwaysOn 数据同步技术,在 EF Core 中通过动态切换数据库和表来实现读写分离。

2986次播放

第57期-相关工具与扩展

  • 2019-09-16 21:13:15
  • 40 分钟

使用相关工具和扩展库为 Entity Framework Core 提供更多的附加功能,数据库优先、模型优先和代码优先生成器,强大直观的 ORM 设计器,可视化反向工程和数据库迁移管理,使用可定制的模板自动生成代码,可自动生成视图模型,链式验证规则和模型映射器代码,历史审计日志保存,轻松构建基于字符串的 LINQ 动态表达式,支持二级缓存查询数据,简单访问元数据与配置,支持高性能批量插入、批量更新、批量删除和批量读取。

4201次播放

第56期-使用Fluent方式验证数据

  • 2019-09-14 10:26:08
  • 42 分钟

使用 Code First 的编程方式常基于 Fluent API 配置模型,EF Core 不支持 Fluent API 验证规则,使用快照和元数据信息扩展 SaveChanges 方法,使其同时支持数据注解验证规则和 Fluent 验证规则, 使开源的 FluentValidation 验证框架分离实体和验证规则。

3753次播放

第55期-使用规则注解特性验证数据

  • 2019-09-13 23:49:26
  • 36 分钟

针对 EF Core 的所有操作默认都不会验证模型,事先验证模型可避免不必要的性能开销,捕获 DbUpdateException 数据库更新异常,基于 ValidationAttribute 规则注解特性的通用验证方案,编写简单的数据注解验证示例,当执行 SaveChanges 方法保存数据时自动验证模型,编写并扩展注解特性,实现 IValidatableObject 接口可提供用于实体验证的方式。

2800次播放

第54期-动态模型配置

  • 2019-09-10 22:51:05
  • 36 分钟

使用元数据信息动态配置表和列模型,理解 OnConfiguring 和 OnModelCreating 配置方法,最简单的实体配置方法,使用表达式分离配置,使用方法分离配置,使用单独类分离配置,自动加载项目中的配置类,重写并扩展 DbContext 提供的相关方法。

4216次播放

第53期-查询实体的元数据

  • 2019-09-09 23:26:10
  • 36 分钟

什么是元数据,为何需要元数据,关于 EF Core 底层提供的元数据接口,使用 DbContext 或 ModelBuilder 提供的 IModel 模型接口查询元数据信息,实体与表的元数据,属性与列的元数据,学习编写自己的 Expression 表达式方法,扩展并封装一个查询属性元数据的 Lambda 表达式解析器。

2953次播放

第52期-数据库SQL操作日志记录

  • 2019-08-29 21:29:08
  • 50 分钟

使用  SQL Server Profiler 工具监视数据库引擎的活动,捕获事件日志并将其保存到文件或表中供以后分析。学会使用微软 XEvents 扩展事件探查器跟踪事件日志,以排除故障或确定性能问题,根据自定义向导定制扩展事件探查器。使用 Visual Studio 中提供的 IntelliTrace 智能跟踪工具记录应用程序中的特定事件和这些时间点上的发生的数据,学会使用 SQL Server 日志管理器分析问题。在 ASP.NET Core 中使用 NLog 框架输出 EF Core 的执行日志到指定的文件,启用敏感数据日志记录标记以输出执行参数。

2818次播放

第51期-捕获审计日志数据

  • 2019-08-28 22:05:20
  • 44 分钟

对于大多数程序而言,对数据库的更改都需要可追溯,通过日志记录可追溯变更,当发生误操作时,可追责到具体的责任人,从数据库层面,很多数据库本身都支持日志记录功能,配置 SQL Server 中的变更数据捕获和更改跟踪功能可实现日志自动记录,从应用程序层面,根据不同的需求,可通过不同的方案捕获审计数据,创建审计字段记录变更,通过历史审计表实现更详细的变更记录,应用开源库轻松记录变更日志,理解 ABP 框架中审计日志的应用场景。

3440次播放

第50期-数据库提供程序优化与单元测试

  • 2019-08-22 21:23:05
  • 26 分钟

Entity Framework Core 支持通过不同的数据库提供程序访问许多不同的数据库,随着 .NET Core 的发展和开源社区的活跃,支持的提供程序也越来越多,使用 NuGet 包管理器向应用程序中添加数据库提供程序,使用 SQL Server 内存优化表提高数据访问性能,关于 SQLite 的内存模式和 In-Memory 数据库提供程序,基于内存驻留的数据库提供程序可避免单元测试不受IO读写操作的开销,关于数据访问单元测试,为数据库引擎编写自己的数据库提供程序,提供程序命名约定规则。

4905次播放

第49期-仓储与工作单元模式

  • 2019-08-20 22:04:19
  • 47 分钟

仓储库和工作单元模式旨在创建数据访问层和应用程序的业务逻辑层之间的抽象层,实现这些模式可让你的应用程序对数据数据持久层的变化不敏感,从而提供对数据访问层的灵活扩展,而且很容易进行自动化单元测试和进行测试驱动开发,学习微软官网基于仓储与工作单元模式的简单实现,基于 Entity Framework Core 框架实现通用的仓储与工作单元模式,在 ASP.NET Core 中依赖注入工作单元,实现并注入自定义的实体仓储类。

4809次播放

第48期-属性变更事件追踪策略

  • 2019-08-13 21:58:14
  • 44 分钟

如果上下文中加载了大量的实体准备修改,使用 DetectChanges 会造成性能开销,可通过快照提供的相关方法显式变更快照值,基于属性变更事件的追踪策略,当属性变更时可自动同步快照状态,可用 ChangeTrackingStrategy 枚举设置变更追踪策略,订阅 Tracked 和 StateChanged 事件,理解 HasChanges、SaveChanges、AcceptAllChanges、Load、Reload 和 Local 的使用方法。

3696次播放

第47期-变更追踪策略与原理

  • 2019-07-21 00:17:34
  • 47 分钟

理解的 Snapshot 快照式变更追踪机制,使用 DetectChanges 方法可检测对 POCO 实体的属性和关系所做的更改,通常由许多方法自动调用,因此很少需要显式调用此方法,但是通常出于性能原因,可能需要设置 AutoDetectChangesEnabled 标志以关闭 DetectChanges 方法的自动调用行为,在上下文中使用 Entry 方法捕获实体快照,查询当前快照的实体状态、数据库值、原始值和当前值。实现 INotifyPropertyChanging 和 INotifyPropertyChanged 接口,分别在属性变更前后通知外部客户端,实现 INotifyCollectionChanged 接口,当添加和删除项或清除整个列表时,向侦听器通知动态更改,集合 ObservableCollection 表示一个动态数据集合,在添加项、移除项或刷新整个列表时,此集合将提供通知。

4700次播放

第46期-上下文DbContext的生命周期

  • 2019-07-17 00:19:05
  • 49 分钟

数据库连接管理,使用 CanConnect 方法检测连接状态,可用 GetDbConnection 方法访问当前连接,通过 OpenConnection 打开连接,使用 CloseConnection 关闭连接,理解连接池原理,查看当前数据库已连接的会话,配置连接池,关于 using 语句与 IDisposable 接口,释放 DbContext 上下文相关的资源,阅读微软 DbContext 源代码,分析相关资源的释放逻辑,关于上下文依赖注入的生命周期,理解 DbContext 的线程非安全性。

4642次播放

第45期-事务隔离级别与死锁

  • 2019-07-15 22:32:44
  • 55 分钟

显式事务与隐式事务,有关事务管理的扩展方法,根据业务逻辑显式提交或回滚事务,事务隔离级别场景举例,编写示例代码演示隔离级别,理解读未提交、读已提交、可重复读和串行化隔离级别,通过示例代码演示由事务引发的脏读、不可重复读和幻读问题,分析事务死锁产生的原因,在活动与监视器中查看数据库资源的使用情况,使用 SQL Server Profiler 工具和 扩展事件会话管理器,查看死锁图,分析死锁图上的会话进程、占有资源锁和死锁牺牲品。

2373次播放

第44期-使用事务

  • 2019-07-10 21:53:21
  • 43 分钟

关于 EF Core 中的默认事务支持,设置 AutoTransactionsEnabled 以关闭事务的默认行为,使用微软 SQL Server Profiler 工具跟踪监控事务,控制相同 DbContext 上下文事务,控制跨 DbContext 上下文事务,使用外部 DbTransactions 事务,在同一个事务中执行 ADO.NET 操作 和 EF Core 操作,使用 System.Transactions 提供的环境事务,环境事务类 TransactionScope 和 CommittableTransaction 的用法,本地事务与分布式事务协调器,关于目前微软 .NET Core 平台中分布式事务的可用性。

3809次播放

第43期-事务基础知识

  • 2019-07-08 21:06:26
  • 31 分钟

事务的基本概念与 ACID 特征,原子性、一致性、隔离性和持久性特征,学习读未提交、读已提交、可重复读和串行化隔离级别,由事务引发的脏读、不可重复读和幻读问题,隔离级别对性能和安全性的影响,悲观锁、乐观锁、共享锁、排它锁、更新锁、意向锁和架构锁,了解事务原理,学习 SQL Server 锁机制和事务隔离级别,关于死锁的分析与解决方法。

2432次播放

第42期-删除数据的多种方案

  • 2019-07-04 21:23:05
  • 42 分钟

使用 DbContext 或 DbSet 提供的 Remove 方法删除数据,可显式设置 EntityState 状态删除数据,对已跟踪和未跟踪状态的实体分别执行删除操作,可用 RemoveRange 方法批量删除数据,调用存储过程或原生 SQL 删除数据,级联删除规则,必需和可选外键关系对删除规则的影响,理解 Cascade、ClientSetNull、SetNull 和 Restrict 删除行为,学习微软提供的各种删除行为示例代码,从而理解不同删除行为对内存依赖项和数据库依赖项的影响。

4801次播放

第41期-自动设置属性的显式值

  • 2019-07-02 22:16:00
  • 26 分钟

自动生成属性值是指在添加或更新实体时由数据库自动为字段生成显式值,使用 HasDefaultValue 或 HasDefaultValueSql 在添加期间生成字段的默认值,将显式值插入到数据库 IDENTITY 列,使用数据库触发器在更新期间为字段生成值,分别使用 ValueGeneratedNever、ValueGeneratedOnAdd、ValueGeneratedOnUpdate 和 ValueGeneratedOnAddOrUpdate 方法改变生成值的行为。

4109次播放

第40期-更新数据的多种方案

  • 2019-06-28 00:15:23
  • 51 分钟

快照式变更跟踪器原理,已跟踪实体数据的更新,更新未跟踪的断开实体,显式修改 EntityState 状态,分别使用 DbContext 或 DbSet 的 Update 和 Attach 方法更新实体,三种更新方式的异同,可通过遍历对象图手动设置需要更新的属性字段,理解数据库值、当前值和原始值的区别,用 EntityEntry 跟踪信息类的 IsKeySet 属性可判断实体是否设置键值,使用 TrackGraph 跟踪对象图,修改外键值或导航属性均可更新实体所关联的数据。

3365次播放

第39期-添加数据的多种方案

  • 2019-06-26 00:03:47
  • 53 分钟

理解 EF Core 中的 ChangeTracker 快照式变更跟踪器,通过 EntityEntry 查询实体的跟踪信息,用 EntityState 表示实体状态,用示例深入分析实体的状态迁移,查看微软开源代码,理解 DbContext 和 DbSet 内部结构,使用 Add、AddAsync、AddRange 和 AddRangeAsync 方法添加数据,使用 Attach 和 AttachRange 方法添加数据,通过修改实体状态的方式添加数据,添加具有关系图实体的数据,注意无法插入数据的情况,添加相关实体的数据,关于自增主键数据的添加,使用 SET IDENTITY_INSERT 将显式值插入到表的标识列中,使用批处理语句获得更好的性能,还可使用 ExecuteSqlCommand 执行 SQL 命令或者存储过程的方式保存数据。

3007次播放

第38期-多租户系统架构的最佳实践

  • 2019-06-22 17:00:07
  • 51 分钟

全局筛选器的限制,多租户架构的实现方案,多数据库多部署方案,多个数据库单部署方案,单数据库单部署方案,混合数据库单部署方案,单多混合数据库多部署方案,每种方案的优缺点,选择架构需要多方面因素,理解多租户与多用户的区别,多租户架构在 ABP 和 OrchardCore 框架中应用,使用 ASP.NET Core 与 Entity Framework Core 技术轻松实现自己的多租户系统,开源多租户架构示例代码。

2267次播放

第37期-全局查询筛选器与逻辑删除

  • 2019-06-20 22:50:40
  • 56 分钟

在 EF Core 中使用查询筛选器设置查询数据的全局条件,使用 HasQueryFilter 方法设置全局筛选器,可用 IgnoreQueryFilters 对特定的查询禁用筛选器,支持 Include 使用全局筛选器加载关联的导航属性,理解逻辑删除与物理删除,使用全局筛选器轻松实现逻辑删除,通过 ISoftDelete 接口约定实体的软删除行为,为所有实现软删除接口的实体动态设置全局筛选器,使用 Expression 动态生成基于全局筛选器的 Lambda 表达式,扩展软删除通用逻辑,重写 SaveChanges 方法将物理删除转换为逻辑删除。

4535次播放

第36期-异步查询&工作原理&注释标记

  • 2019-06-19 21:37:25
  • 30 分钟

当在数据库中执行查询时,异步查询可避免阻止线程,从而增加应用程序的吞吐量,Entity Framework Core 提供了一组 Async 后缀的异步扩展方法,可用于执行异步查询,理解 async 和 await 异步关键字的工作流程。有的查询只会在内存中构建查询表达式树,只有在使用结果时,查询才会被推送到数据库执行。理解 EF Core 查询数据的工作流程和原理。可使用 TagWith 方法对 LINQ 查询生成的 SQL 语句标记注释,这有利于后续日志跟踪。

4996次播放

第35期-执行原始SQL查询

  • 2019-06-18 23:48:00
  • 38 分钟

在 EF Core 中使用 FromSql 方法执行 SQL 查询语言,执行数据库存储过程,理解 SQL 注入攻击,查询时传递参数的方式,参数占位符,字符串内插语法,用 DbParameter 传递参数,关于 FormattableString 与 String 的在传递参数上的区别,原始 SQL 查询与 LINQ 查询混合使用,原始 SQL 查询与状态跟踪器,关联导航属性相关数据,注意事项和一些限制,使用 ExecuteSqlCommand 执行更多 SQL 语句。

3445次播放

第34期-客户端与服务端求值&跟踪与非跟踪查询

  • 2019-06-17 23:43:18
  • 37 分钟

客户端与服务器评估,客户端求值性能问题,求值日志记录,客户端求值引发异常,EF Core 支持部分查询在客户端中求值,而将其它部分推送到数据库执行。跟踪与非跟踪查询,跟踪行为可控制是否将实体实例的信息保留在跟踪器中,如果已跟踪某个实体,则该实体中检测到的任何更改都会在 SaveChanges 期间永久保存到数据库,使用 AsNoTracking 可进行单个非跟踪查询,使用 QueryTrackingBehavior 在上下文实例级别更改默认跟踪行为,投影与跟踪。

3230次播放

第33期-预先加载&显式加载&延迟加载

  • 2019-06-10 23:30:51
  • 47 分钟

加载关联导航属性的三种方式,默认情况,导航属性不被加载,使用 Include 和 ThenInclude 加载导航属性,多个导航属性预先加载,多层导航属性预先加载,派生类型上的导航属性预先加载,忽略导航属性加载时的警告与错误。基于 DbContext 提供的 Entry 方法, 可用 Collection 方法关联集合导航属性,可用 Reference 方法关联引用导航属性,调用 Load 执行显式加载行为。使用代理包提供的 UseLazyLoadingProxies 方法实现最简单的自动化延迟加载,使用 ILazyLoader 接口实现延迟加载,基于 Action 匿名委托实现延迟加载。导航属性与序列化,对象图中循环引用导致序列化错误问题与解决方案。

2283次播放

第32期-数据查询与SQL语句生成

  • 2019-06-04 21:45:38
  • 35 分钟

分别理解生成操作、相等比较、串联运算、联接运算、数据分组、投影运算、数据分区、数据排序、集合运算和限定符运算,关于这些操作的远程支持与本地支持,它们如何生成与数据库相关的 SQL 语言,查询性能优化建议。

4272次播放

第31期-本地查询&远程查询&生成SQL语句

  • 2019-05-29 01:12:16
  • 38 分钟

理解 IEnumerable 、IQueryable 和 DbSet 类型的区别,远程查询与本地查询,基于 IQueryable 的异步扩展方法,Func 与 Expression 区别,跟踪 EF Core 的执行过程,将执行的 SQL 日志输出到控制台,分别理解元素操作、聚合运算和数据筛选,关于这些操作的远程支持与本地支持,它们如何生成与数据库相关的 SQL 语言。

3349次播放

第30期-元素操作&集合运算&转换类型

  • 2019-05-26 18:12:13
  • 39 分钟

使用 Zip 方法将两个序列通过指定的函数进行合并,元素操作可从序列中查询唯一特定的元素,可使用 ElementAt、ElementAtOrDefault、First、FirstOrDefault、Last、LastOrDefault、Single 和 SingleOrDefault 方法对单元素进行操作,聚合运算可从值集合中计算出单个值,可使用 Aggregate、Average、Count、LongCount、Max、Min 和 Sum 方法进行聚合运算,转换方法可将序列转换为其它数据类型的序列,可使用 AsEnumerable、AsQueryable、Cast、OfType、ToArray、ToDictionary、ToList 和 ToLookup 方法转换数据类型。

4249次播放

第29期-生成操作&相等比较&串联运算

  • 2019-05-25 12:13:06
  • 33 分钟

生成运算是指创建新的值序列,使用 DefaultIfEmpty、Empty、Range 和 Repeat 方法生成集合序列,两个序列相等是指它们具有元素相等且相同数量,可使用 SequenceEqual 方法判断集合序列相等性,基于 IEquatable 和 IEqualityComparer 接口自定义相等比较器,串联运算是指将一个序列附加到另一个序列的运算,可使用 Concat 方法进行串联操作。

4975次播放

第28期-联接运算与数据分组

  • 2019-05-24 12:09:10
  • 38 分钟

联接就是将一个数据源中的对象与另一个数据源中具有相同公共属性的对象相关联,左外联接、右外联接、内联接和全联接的区别,使用 Join 和 GroupJoin 方法进行联接运算,分组是指将数据分到不同的组,使每组中的元素拥有公共的属性,使用 GroupBy 和 ToLookup 方法对数据进行分组,理解前后两者的区别。

3813次播放

第27期-投影运算与数据分区

  • 2019-05-23 23:57:19
  • 33 分钟

投影是指将对象转换为一种新形式的操作,分别使用 Select 与 SelectMany 方法进行投影运算,分区是指将输入序列划分为两个部分的操作,使用 Skip、SkipWhile、Take 和 TakeWhile 方法进行数据分区,理解 .NET Core 3.0+ 与 .NET Standard 2.1+ 中新增的 SkipLast 和 TakeLast 数据分区方法。

3818次播放

第26期-排序&集运算&筛选&限定

  • 2019-05-23 00:38:45
  • 48 分钟

学习 LINQ 语言集成查询, 关于 DbSet 数据结构,理解 IEnumerable 与 IQueryable 的区别,微软官方提供的101个 LINQ 示例,Query Syntax 与 Method Syntax,使用 OrderBy、OrderByDescending、ThenBy、ThenByDescending 和 Reverse 方法对数据进行排序,使用 Distinct、Except、Intersect 和 Union 方法对两个集合进行交差并去重运算,使用 Where 和 OfType 方法筛选数据,使用 All、Any 和 Contains 方法进行限定符运算,基于 IEquatable 和 IEqualityComparer 接口定制相等性比较器。

4938次播放

第24期-反向工程与相关工具

  • 2019-05-20 07:55:22
  • 40 分钟

使用反向工程工具将现有数据库生成模型代码,指定提供程序名称,架构与表筛选,保留数据库名称,数据注解优先原则,更改上下文名称,设置目录与命名空间,关于 PMC 与 CLI 命令行工具参考,在 ASP.NET Core 中创建上下文,无参数的构造函数上下文的创建,从设计时工厂创建上下文。

2156次播放

第23期-配置迁移操作

  • 2019-05-20 07:54:46
  • 39 分钟

多个提供程序的迁移支持,维护两个不同版本的迁移集,单个迁移集自定义,配置迁移历史记录表,理解 EnsureDeleted,EnsureCreated 和 Migrate 可编程接口,在生产平台中应用迁移。

3924次播放

第22期-自定义迁移操作

  • 2019-05-20 07:54:05
  • 35 分钟

使用 MigrationBuilder API 在迁移过程中执行不同的操作,使用 MigrationBuilder 提供的 SQL 方法灵活操作数据库,多个提供程序的迁移支持,使用 MigrationOperation 分离 SQL 自定义操作,将迁移文件存储到单独的项目,维护多个迁移集。

3368次播放

第20期-查询类型映射

  • 2019-05-20 07:44:42
  • 29 分钟

实体类型映射与查询类型映射,在数据管理工具中使用可视化工具创建视图,在 Entity Framework Core 中使用 ExecuteSqlCommand 命令创建视图,理解 DbSet 与 DbQuery 的区别,分别将查询集合类型映射到数据库视图和原始查询语句。

4470次播放

第25期-团队环境中的迁移

  • 2019-05-20 07:44:42
  • 37 分钟

集中式版本控制与分布式版本控制,分布式 Git 版本控制系统,工作原理与操作方法,在 GitHub 上创建代码仓库,使用 Visual Studio 团队资源管理器连接 GitHub 远程仓库,可视化提交、推送、拉取和同步工具,团队协作中的迁移冲突,比较文件,快速合并冲突,采用远程,保留本地。

4349次播放

第19期-多模型切换与空间数据模型

  • 2019-05-20 07:44:42
  • 31 分钟

使用 DbContext 上下文中的属性来更改模型的构建方式,实现 IModelCacheKeyFactory 模型缓存键工厂接口,更改模型创建缓存机制。基于 GIS 地理信息系统的 NetTopologySuite 开源库,在 EF Core 中使用空间数据模型存储物理位置和形状对象。

4443次播放

第21期-数据库模型迁移工具

  • 2019-05-20 07:44:42
  • 42 分钟

模型与数据库同步方案,基于模型优先的迁移和基于数据库优先的反向工程。学习 PMC 和 CLI 环境下的迁移工具,创建迁移,理解迁移时生成的文件,应用迁移更新数据库,删除迁移脚本,回滚还原迁移,基于迁移生成数据库 SQL 脚本,轻松删除数据库,在运行时通过编程方式调用迁移,通过编程方式生成迁移数据库 SQL 脚本。

2631次播放

第18期-数据库序列配置

  • 2019-05-20 07:44:42
  • 32 分钟

理解 SQL Server 数据库中的序列,使用 SSMS 创建并使用序列。在 Entity Framework Core 中使用 HasSequence 创建并配置序列,设置起始值和增量,将字段的默认值关联到序列,使用 ForSqlServerUseSequenceHiLo 将数据库表的自增主键关联到指定的序列,数据库序列在微软开源项目中的应用。

2639次播放

第17期-数据模型配置

  • 2019-04-28 23:13:00
  • 37 分钟

设置数据库表的名称与架构,列名设置,字段类型和元数据设置,主键约束名称,数据库默认 Schema 架构修改,数据库表中的计算列,为数据库指定字段设定默认值。

2328次播放

第16期-具有构造函数的实体类型

  • 2019-04-27 09:32:53
  • 25 分钟

理解 Entity Framework Core 使用构造函数的实体类型,默认无参构造函数,显式指定无参构造函数,有参构造函数的命名约定,私有构造函数的可访问性,在实体中使用构造函数依赖注入服务。

2397次播放

第15期-数据库初始化

  • 2019-04-27 08:36:54
  • 34 分钟

学习 EF Core 中初始化演示数据的三种方式,使用 DbContext 上下文的 SaveChanges 方法生成演示数据,通过 EnsureCreated 确认创建数据库,使用 ModelBuilder 的 HasData 方法生成演示数据,固有的实体类型数据初始化,在迁移脚本中使用 MigrationBuilder 的 InsertData、UpdateData 和 DeleteData 更灵活的处理演示数据。

3908次播放

第14期-值转换器

  • 2019-04-27 01:04:49
  • 38 分钟

关于 Entity Framework Core 中数据库字段类型与 CLR 类型的转换原理,使用 Fluent API 配置值转换器,创建并使用 ValueConverter 值转换器,自定义转换器,微软内置的转换器,预定义转换器。

3558次播放

第13期-私有字段映射

  • 2019-04-26 07:56:28
  • 29 分钟

理解属性与字段的区别,读访问器与写访问器,使用 Visual Studio 提供的快速操作和重构功能封装字段,关于 Entity Framework Core 中针对私有字段映射的基本约定,使用 Fluent API 显式将属性访问映射到特定字段,为隐藏属性访问器指定私有字段,使用 PropertyAccessMode 枚举设置属性访问器模式。

4270次播放

第12期-表拆分与固有实体类型

  • 2019-04-25 21:13:56
  • 41 分钟

理解 EF Core 中的表拆分, 继承映射与表拆分的区别,将多个实体映射到同一个数据表,固有实体类型,使用 OwnedAttribute 数据注解配置,使用 Fluent API 配置固有类型,设置固有类型生成的表字段,配置多个相同类型的固有属性,嵌套固有的类型,将固有类型映射到单独的表,固有类型的集合配置,固有类型的查询方式。

3232次播放

第11期-继承关系映射

  • 2019-04-24 21:27:48
  • 37 分钟

理解继承关系映射约定,表结构 Discriminator 字段解析,在 Entity Framework Core 显式设置基类,删除继承单表关系约定,非继承情况下的分表模式,修改 Discriminator 标识列属性,修改标识列字段名称与类型,指定标识列的数据值。

4832次播放

第10期-数据库索引与备用键约束

  • 2019-04-23 22:53:08
  • 36 分钟

数据库索引原理与配置,在 Entity Framework Core 中创建索引,配置唯一索引,复合多列索引,修改索引名称,索引筛选表达式。备用键约束,配置备用键,复合多列备用键,设置备用键约束名称。

3078次播放

第09期-级联删除规则

  • 2019-04-18 22:45:10
  • 38 分钟

数据库关系图,外键关系约束,创建或重新启动时检查现有数据,更新与删除规则设置,关于不执行任何操作、级联、设置 Null 和设置默认值规则的差异,强制外键约束,在 Entity Framework Core 中使用 OnDelete 方法配置关系约束删除规则。

4989次播放

第08期-实体关系配置

  • 2019-04-16 23:04:07
  • 55 分钟

使用 HasForeignKey 和 HasPrincipalKey 配置主键之外的属性作为外键,外键的必需与可选约束,一对多关系,一对一关系和多对多关系配置。

2547次播放

第07期-导航属性关系配置

  • 2019-04-16 21:18:30
  • 39 分钟

使用 InverseProperty 特性配置多导航属性关系,关于 ForeignKey 特性外键设置,通过 HasOne 或 HasMany 配置导航属性,调用 WithOne 或 WithMany 配置反向导航属性,设置单向导航属性,单个主键与外键,复合主键与外键,显式或隐式的方式指定主键与外键。

2271次播放

第06期-隐藏属性与关系术语约定

  • 2019-04-15 23:37:02
  • 37 分钟

隐藏属性的约定与配置,设置隐藏属性值,对隐藏属性执行查询。关于 Entity Framework Core 中的关系术语定义,依赖实体,主体实体,外键,主键,导航属性,集合导航属性,引用导航属性,反转导航属性,默认约定与外键规则,使用 ForeignKeyAttribute 特性和 HasForeignKey 方法显式设置外键。

3722次播放

第05期-并发冲突与令牌

  • 2019-04-03 23:27:35
  • 38 分钟

理解 Entity Framework Core 并发冲突原理,悲观并发与乐观并发,分别使用 ConcurrencyCheckAttribute 特性和 IsConcurrencyToken 方法将属性配置为并发标记,并发冲突重试机制,时间戳与行版本,使用 TimestampAttribute 特性和 IsRowVersion 方法将字节数组属性设置为并发标记。

3403次播放

第04期-模型映射配置

  • 2019-04-01 23:57:30
  • 44 分钟

在非 ASP.NET Core 环境中使用容器依赖注入 Entity Framework Core 上下文,读取配置文件,通过设计时上下文工厂实现模型迁移,理解默认约定,通过 Data Annotations 数据注解和 Fluent API 链式方法配置模型,动态生成数据库值,设置必填或可选,最大长度限制。

2215次播放

第03期-上下文与模型映射配置

  • 2019-03-28 21:43:17
  • 47 分钟

配置 DbContext 上下文,DbContextOptionsBuilder 与 DbContextOptions,基于构造函数配置,重写 OnConfiguring 方法配置,依赖注入方式,用于测试的 SQLite 内存模式和 InMemory 内存提供程序。理解 EF Core 的默认约定,并通过 Data Annotations 数据注解和 Fluent API 链式方法配置模型,忽略不必要的类型,忽略不必要的属性,数据库主键,复合主键。

2629次播放

第02期-基础配置与应用

  • 2019-03-27 22:14:31
  • 41 分钟

使用 Entity Framework Core 访问 SQL Server 数据库,配置连接字符串,在容器中依赖注入上下文,记录数据库操作日志,理解 Code-First 与 Database-First 区别,对现有数据库进行反向工程,使用工具生成基于现有数据库的上下文和模型类,在原始版本的 .NET Framework 平台上使用 EF Core 框架,理解多平台 .NET Standard 标准库。

3383次播放

第01期-数据访问技术入门

  • 2019-03-26 22:50:38
  • 43 分钟

理解 Entity Framework Core 数据访问技术,轻量化、可扩展、开源和跨平台,数据库提供程序与多数据库引擎支持,创建一个 .NET Core 控制台应用,该应用使用 EF Core 对 SQLite 数据库执行数据访问,通过迁移工具基于模型创建数据库,使用 EF Core 构建 ASP.NET Core MVC 应用程序,可用 SQLiteStudio 管理数据库。

4486次播放