代码改变世界

说说EFCore7 中有哪些新功能

2025-03-25 16:09  钟铧若岩  阅读(28)  评论(0)    收藏  举报
Entity Framework Core 7(EF Core 7)在性能、功能和开发体验等方面都带来了不少新特性,下面为你详细介绍:

1. 性能优化

  • 查询性能提升:EF Core 7 优化了查询执行计划,减少了不必要的数据库往返次数。例如,在处理复杂查询时,它能更高效地将多个查询合并为一个,减少了与数据库的交互,从而提升整体性能。
  • 更快的迁移:迁移是指在 EF Core 中对数据库架构进行更改的操作。EF Core 7 对迁移的执行速度进行了优化,特别是在处理大型数据库和复杂的架构更改时,能显著缩短迁移所需的时间。

2. 新的查询功能

  • 标量函数支持:支持在查询中使用更多的 SQL 标量函数。例如,可以在 LINQ 查询中直接使用数据库的日期和时间函数,如 DATEPARTDATEDIFF 等,使查询更加灵活。
var result = context.Orders
    .Select(o => EF.Functions.DateDiffDay(o.OrderDate, DateTime.Now))
    .ToList();

  

  • JSON 查询支持:增强了对 JSON 数据类型的查询支持。可以直接在 LINQ 查询中对 JSON 列进行筛选、投影等操作,方便处理包含 JSON 数据的数据库表。
var result = context.Products
    .Where(p => EF.Functions.JsonValue(p.JsonColumn, "$.category") == "Electronics")
    .ToList();

  

3. 开发体验改进

  • 更好的调试支持:提供了更详细的查询日志和调试信息,帮助开发者更轻松地诊断和解决查询问题。可以通过配置日志级别,查看生成的 SQL 查询语句、参数值等信息。
var optionsBuilder = new DbContextOptionsBuilder<MyDbContext>();
optionsBuilder.UseSqlServer(connectionString)
              .LogTo(Console.WriteLine, LogLevel.Information);

  

  • 简化的配置:在某些情况下,减少了配置的复杂性。例如,对于一些常见的映射和约束,提供了更简洁的 API 来进行配置。

4. 新的数据库提供程序特性

  • SQL Server 支持:支持 SQL Server 的新特性,如对 HIERARCHYID 数据类型的更好支持,允许在 EF Core 中直接使用该数据类型进行建模和查询。
  • Cosmos DB 支持:对 Cosmos DB 的支持得到了增强,包括更好的分区键管理、更高效的查询执行等,提高了在 Cosmos DB 上使用 EF Core 的性能和开发体验。

5. 模型配置改进

  • 多租户支持:提供了更强大的多租户支持功能。开发者可以更方便地实现基于租户的查询过滤和数据隔离,例如通过在查询中自动添加租户条件来确保每个租户只能访问自己的数据。
modelBuilder.Entity<Order>()
    .HasQueryFilter(o => o.TenantId == currentTenantId);

  

6. 其他改进

  • LINQ 改进:对 LINQ 查询的支持更加完善,能够处理更多复杂的查询场景。例如,支持在子查询中使用集合运算符(如 Contains),使查询表达更加灵活。
  • 异步操作改进:进一步优化了异步操作的性能和稳定性,减少了异步操作中的资源竞争和锁冲突,提高了应用程序的并发处理能力。