Entity Framework8(EF8)有哪些新特性
2024-06-16
33
Entity Framework 8(EF8)是用于 .NET 开发人员的流行对象关系映射 (ORM) 框架的最新版本。它于 2023 年 11 月发布,包含许多新功能和改进。
EF8 的主要新功能包括:
对 JSON 列的支持:EF8 现在支持将 JSON 数据存储在数据库中的 JSON 列中。这对于存储非关系数据或具有复杂结构的数据非常有用。 值对象:EF8 现在支持值对象。值对象是不可变的类型,它们的值是其身份的一部分。这对于使用领域驱动设计 (DDD) 的应用程序非常有用。 未映射类型的 SQL 查询:EF8 现在允许您执行返回未映射到模型类型的 SQL 查询。这对于需要访问数据库中不表示为实体的数据非常有用。 改进的性能:EF8 在许多方面都进行了性能改进。这包括改进的查询性能、改进的跟踪性能和改进的更改跟踪性能。其他新功能和改进包括:
对 .NET MAUI 的支持:EF8 现在支持 .NET MAUI,这是一种用于构建跨平台应用程序的框架。 改进的 SQLite 支持:EF8 对 SQLite 的支持进行了改进,包括对 JSON 列的支持和改进的性能。 改进的代码生成:EF8 的代码生成器进行了改进,以生成更简洁、更易读的代码。有关 EF8 中所有新功能和改进的详细信息,请参阅 EF8 文档: URL EF8 文档。
以下是一些 EF8 新功能的示例:
使用 JSON 列
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
[Column(TypeName = "json")]
public Address Address { get; set; }
}
public class Address
{
public string Street { get; set; }
public string City { get; set; }
public string State { get; set; }
public string ZipCode { get; set; }
}
在上面的代码中,Person 类有一个 Address 属性,该属性存储为 JSON 列。
使用值对象
public class Money
{
private readonly decimal _amount;
public Money(decimal amount)
{
_amount = amount;
}
public decimal Amount => _amount;
public static implicit operator Money(decimal amount) => new Money(amount);
public static implicit operator decimal(Money money) => money._amount;
}
在上面的代码中,Money 类是一个值对象。它表示货币值。
执行未映射类型的 SQL 查询
var context = new MyContext();
var results = context.SqlQuery<dynamic>(
@"SELECT * FROM dbo.Products
WHERE Price > @price",
new SqlParameter("@price", 100));
foreach (var result in results)
{
Console.WriteLine($"{result.Name} - {result.Price}");
}
在上面的代码中,SqlQuery 方法用于执行返回未映射到模型类型的 SQL 查询。
更新于:3个月前赞一波!2
相关文章
- ES6新特性: 解构赋值
- .NET8 15个新特性
- Entity Framework Core支持HierarchyId
- C# 11 的新特性和改进预览
- .NET 8 Preview 5发布 改进了Webcil打包格式
- EF Core 8 (EF8) Contains报错:Microsoft.Data.SqlClient.SqlException (0x80131904): 关键字 'WITH' 附近有语法错误。
- Entity Framework (EF) 数据库迁移命令教程
- Entity Framework实体模型选择Fluent API还是数据注释
- Entity Framework Core反向工程DB First基于数据库生成DbContext和实体类
- .NET Core MVC配置注入使用Entity Framework Core(EF) 无需手动释放
- .NET Entity Framework(EF)高性能分页
- Redis6.x新特性介绍
- Entity Framework Core的性能如何?
- SQL Server 2022有哪些新特性?
- ADO.NET和Entity Framework Core怎么选?
文章评论
全部评论