首页 程序笔记 Entity Framework8(EF8)有哪些新特性

Entity Framework8(EF8)有哪些新特性

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 查询。

2

站心网

Entity Framework 8(EF8)是用于 .NET 开发人员的流行对象关系映射 (ORM) 框架的最新版本。它于 2023 年 1..

为您推荐

Entity Framework(EF)DbContext SaveChanges()生命周期

在Entity Framework(EF)中,SaveChanges()方法的作用是保存DbContext上下文中所有被跟踪的更改。这意味着,在一个DbContext实例的生命周期内,无论对象在何处被修改,只要它们被DbContext跟踪,SaveChanges()都会..

优秀软件工程师必备的7大特性

不是每一个程序员都能成为优秀的软件工程师。在过去的6年时间里,我在Ooyala、Quora和now Quip这3个创业公司面试过许许多多挺有发展潜力的“种子选手”,他们都有着5年以上的工作经验,并且曾为类似于谷歌这样的顶级..

EntityFramework(EF) 控制并发和事务防止超卖

在使用 Entity Framework (EF) 时,实现加减库存并避免超卖的关键是正确地控制并发和事务。以下是实现方法:解决超卖的关键点事务管理:使用事务确保加减库存和库存校验是一个原子操作。悲观锁:通过数据库层面的锁..

C#13新特性 使用System.Threading.Lock简化线程同步

C# 13 引入了新的线程同步类型 System.Threading.Lock,它通过作用域管理的方式简化了锁的使用,使代码更加清晰可靠。本文将全面介绍 System.Threading.Lock 的功能、适用场景,并提供完整的运行示例程序。1. 什么是..

EntityFrame(EF) SQLite常见问题和解决方案

在使用 Entity Framework (EF) SQLite 时可能遇到的一些问题,下面是一些常见的问题和对应的解决方案。1. 无法找到适配器或数据库提供程序运行 EF 时提示类似以下错误:No database provider has been configured fo..

EntityFramework SQLite 为时间字段设置默认值为当前时间

在使用 Entity Framework Core 和 SQLite 时,可以通过以下步骤为时间字段设置默认值为当前时间:方法一:在模型配置中设置默认值你可以在 DbContext 的 OnModelCreating 方法中,通过 Fluent API 配置默认值:prote..

ASP.NET 使用Entity Framework (EF) 创建迁移修改SQLite数据库表结构

在 ASP.NET 中,使用 Entity Framework (EF) 创建并连接 SQLite 数据库是一种轻量级、高效的数据库管理方式。以下是详细步骤:安装必要的 NuGet 包安装EntityFrameworkCore.Sqlite包:Install-Package Microsoft.Ent..

如何从.NET Framework迁移到.NET Core或.NET 6/7?

从 .NET Framework 迁移到 .NET Core 或 .NET 6/7 是一个提升性能和跨平台能力的关键过程。以下是迁移的主要步骤和注意事项:迁移步骤1. 评估当前项目依赖项检查:确保所有第三方库和NuGet包都有与 .NET Core/.NET 6..

.NET9 Blazor有哪些更新?

.NET 9 在 Blazor 中引入了多项更新,增强了开发体验和应用性能。以下是主要更新内容:1. 新的 Blazor 混合应用模板.NET 9 引入了一个支持 .NET MAUI 和 Blazor Web 客户端的混合应用模板。开发者可以利用该模板在共..

.NET 游戏开发框架有哪些?

在游戏开发领域,.NET 框架因其强大的功能和灵活性而广受欢迎。对于希望使用 .NET 进行游戏开发的开发者来说,了解可用的框架是至关重要的。以下是一些流行的 .NET 游戏开发框架:1. Unity: 尽管 Unity 主要使用 C# ..

.NET C# EntityFramework(EF)连接SQLite代码示例

在.NET C#中使用Entity Framework(EF)连接SQLite数据库是一种常见的做法,可以有效地管理和操作数据。以下是一个简单的示例代码,展示了如何使用EF Core连接到SQLite数据库并执行基本的CRUD操作。首先,确保你已经..

.NET9 F#有什么新特性?

F# 9 的新特性简介F# 9 是 .NET 9 的一部分,带来了多项增强功能,旨在提升开发效率和语言特性的一致性。这些改进不仅为现有的 F# 开发者提供了更强大的工具,也使新手更容易上手。以下是主要特性概览:1. 改进的类..

.NET9 C# 13 有哪些新特性?

在 .NET 9 和 C# 13 中,微软引入了一些新的语言特性和性能改进,帮助开发者提高代码效率、简化语法和提升可维护性。以下是一些主要的新特性:参数扩展支持:params 参数现在可以支持除数组外的集合类型,例如 List..

前端js拖拽插件库有哪些?

前端拖拽插件主要包括GoJS、vue.draggable、Vue.Draggable.next、gridster.js、interact.js等。以下是对这些插件的具体介绍:GoJSGoJS官网:https://gojs.netGoJS是一款功能丰富的JavaScript库,主要用于构建流程图..

.NET Framework被淘汰了吗?

.NET Framework并未完全被淘汰,但它的某些版本确实已经停止支持。微软在2023年11月10日停止了对.NET Framework 4.8之前的版本的支持。这一决策意味着使用这些旧版本的应用程序将不再获得安全更新和其他维护,从而可..

Vue 3.5引入新特性 还有与SSR相关的改进

Vue 3.5引入了响应式属性解构、useTemplateRef方法、useId实用函数、内部响应性重构等新特性。以下是具体介绍:响应式属性解构此功能允许开发者在defineProps宏中解构属性而不会失去响应性,这为组件间的属性传递提..

Attribute特性封装通用数据验证

在接口接收数据或者数据库写入的时候一般都会进行数据验证。如果在接收到数据或者插入的时候对对象的每个属性进行检验,代码会很臃肿,而且无法复用,通过Attribute特性可以优雅地进行数据验证。例如我们写一个特性..

.NET Core和Framework的区别?

.NET Core和.NET Framework是微软开发的两个不同的软件开发平台,用于构建Windows应用程序和服务。它们有一些重要的区别:跨平台支持.NET Core 专注于跨平台支持,可以在Windows、Linux和macOS等多种操作系统上运行..

c# 爬虫组件有哪些?

在C#中,有许多用于构建爬虫(网络爬虫)的组件和库,它们可以帮助您从网页上抓取数据。以下是一些常用的C#爬虫组件和库:HtmlAgilityPack:这是一个流行的HTML解析库,可用于从HTML页面中提取数据。它可以帮助您遍..

2023年主流的前端框架有哪些?

当前主流的前端框架当前主流的前端框架有React,Angular,Vue.js,还有一些相对小众但也具有一定影响力的框架,例如 Svelte、Ember、Backbone 等。React:React 是一个由 Facebook 开发的 JavaScript 库,专注于构建..

发表回复

返回顶部