请查收最新的 EF Core 7.0 更新

关注我们

作者:Jeremy Likness

排版:Rani

近期.NET 数据团队宣布了 EF Core 7.0 (EF7)的第四个预览版。除了bug修复和更大功能的基础工作外,此预览版还包括以确保转换器和比较器由类型映射处理,并支持将转换器与值生成器一起使用。请务必阅读 EF7 的完整计划以了解路线图上的内容。

EF Core 7.0 (EF7)

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.0-preview.4.22229.2

转换器和比较器由类型映射处理

https://github.com/dotnet/efcore/issues/17962

将转换器与值生成器一起使用

https://github.com/dotnet/efcore/issues/11597

EF7 的完整计划

https://docs.microsoft.com/ef/core/what-is-new/ef-core-7.0/plan

领域驱动设计和“受保护”密钥

领域驱动设计 (DDD) 的其中一种模式是使用值对象作为键的概念。换句话说,而不是像这样声明一个键:

public class Thing
{public int Id { get; set; }
}

它可能看起来像这样:

public class Thing
{public ThingKey Id { get; set; }
}public class ThingKey
{public ThingKey(Func<int> generator) => Id = generator();  public ThingKey(int id) => Id = id;public int Id { get; private set; }
}

这样做有几个好处。第一个也是最明显的一点是它隐藏了密钥的实现细节。如果您决定更喜欢使用 GUID 的无限资源,而不是更有限和无聊的可用整数的顺序集,那么由于键类提供的缓冲区,您的重构将更加容易。您还可以通过验证保护密钥免受不良数据的影响,这样就没人可以分配负值。说到意外,你有没有将错误的 id 作为一个键传递给一个方法?对编译器而已是不在乎的,因为它都是整数……或字节……或 1 和 0……但如果您使用强类型键,您将被迫提供合适的键。否则,编译器会抱怨。

是否使用此方法当然取决于您,但在预览版 4 之前,EF Core 中的选择还是有限的。从实体转换为标量的最明显方法是使用转换器,但如果您尝试将转换器分配给标记为生成值的属性,EF Core 会抛出异常。该约束已被解除,更重要的是,更新了代码以确保正确处理此案例。让我们知道您是否正在使用此功能以及它如何为您工作!

先决条件

  • EF7 当前面向 .NET 6。随着我们即将发布,它可能会更新到 .NET 7。

  • EF7 不会在      .NET Framework 上运行。

EF7 是 EF Core 6.0 的继承者,不要与 EF6 混淆。如果您正在考虑从 EF6 升级,请阅读我们的从 EF6 移植到 EF Core 的指南。

混淆

https://github.com/dotnet/ef6

EF6 移植到 EF Core

https://docs.microsoft.com/ef/efcore-and-ef6/porting/

如何获得 EF7 预览

EF7 仅作为一组 NuGet 包分发。例如,要将 SQL Server 提供程序添加到您的项目中,您可以通过 dotnet 工具使用以下命令:

dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 7.0.0-preview.4.22229.2

下表链接到 EF Core 包的预览版 1 并描述了它们的用途。

包裹

链接

目的

Microsoft.EntityFrameworkCore

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.0-preview.4.22229.2

独立于特定数据库提供程序的主 EF Core 包

Microsoft.EntityFrameworkCore.SqlServer

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer/7.0.0-preview.4.22229.2

Microsoft SQL Server 和 SQL Azure 的数据库提供程序

Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite/7.0.0-preview.4.22229.2

SQL Server 对空间类型的支持

Microsoft.EntityFrameworkCore.Sqlite

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Sqlite/7.0.0-preview.4.22229.2

SQLite 的数据库提供程序,包括数据库引擎的本机二进制文件

Microsoft.EntityFrameworkCore.Sqlite.Core

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Sqlite.Core/7.0.0-preview.4.22229.2

SQLite 的数据库提供程序,没有打包的本机二进制文件

Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite/7.0.0-preview.4.22229.2

SQLite 对空间类型的支持

Microsoft.EntityFrameworkCore.Cosmos

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Cosmos/7.0.0-preview.4.22229.2

Azure Cosmos DB 的数据库提供程序

Microsoft.EntityFrameworkCore.InMemory

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.InMemory/7.0.0-preview.4.22229.2

内存数据库提供程序

Microsoft.EntityFrameworkCore.Tools

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Tools/7.0.0-preview.4.22229.2

用于 Visual Studio 包管理器控制台的 EF Core PowerShell 命令;使用它来将脚手架和迁移等工具与 Visual Studio集成

Microsoft.EntityFrameworkCore.Design

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Design/7.0.0-preview.4.22229.2

EF Core 工具的共享设计时组件

Microsoft.EntityFrameworkCore.Proxies

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Proxies/7.0.0-preview.4.22229.2

延迟加载和更改跟踪代理

Microsoft.EntityFrameworkCore.Abstractions

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Abstractions/7.0.0-preview.4.22229.2

解耦 EF Core 抽象;将此用于 EF Core 定义的扩展数据注释等功能

Microsoft.EntityFrameworkCore.Relationa

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Relational/7.0.0-preview.4.22229.2

用于关系数据库提供程序的共享 EFCore 组件

Microsoft.EntityFrameworkCore.Analyzers

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Analyzers/7.0.0-preview.4.22229.2

EF Core 的 C# 分析器

我们还发布了 Microsoft.Data.Sqlite.Core 7.0 预览版 1 为 ADO.NET.

Microsoft.Data.Sqlite.Core

https://www.nuget.org/packages/Microsoft.Data.Sqlite.Core/7.0.0-preview.4.22229.2

ADO.NET

https://docs.microsoft.com/dotnet/framework/data/adonet/ado-net-overview

安装 EF7 命令行界面 (CLI)

在执行 EF7 Core 迁移或脚本命令之前,您必须将 CLI 包安装为全局或本地工具。

要全局安装预览工具,请安装:

dotnet tool install --global dotnet-ef --version 7.0.0-preview.4.22229.2

如果您已经安装了该工具,则可以使用以下命令对其进行升级:

dotnet tool update --global dotnet-ef --version 7.0.0-preview.4.22229.2

可以将此新版本的 EF7 CLI 用于使用旧版本 EF Core 运行时的项目。

每日builds

EF7 预览版与 .NET 7 预览版一致。这些预览往往落后于 EF7 的最新工作。考虑使用每日builds来获取最新的 EF7 功能和bug修复。

与预览版一样,每日builds需要 .NET 6。

每日builds

https://github.com/aspnet/AspNetCore/blob/master/docs/DailyBuilds.md

文档和反馈

所有 EF Core 文档的入口点是 docs.microsoft.com/ef/。

欢迎在 dotnet/efcore GitHub 存储库上提交发现的问题和任何其他反馈。(https://github.com/dotnet/efcore/issues/11597)

有用的网址

提供以下链接以方便参考和访问。

  • 主要文档:https://aka.ms/efdocs

  • EF Core 的问题和功能请求:https://aka.ms/efcorefeedback

  • 实体框架路线图:https://aka.ms/efroadmap

  • 双周更新:https://github.com/dotnet/efcore/issues/27185

来自团队的感谢

EF 团队非常感谢多年来使用并为 EF 做出贡献的所有人!

欢迎来到 EF7。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CC精品教程】ContextCapture 4.4.12(CC,Smart 3D)简体中文版安装教程(附安装包下载)

ContextCapture 4.4.12简体中文版是一款功能强大的三维建模软件,用户只需使用自己拍摄的普通照片,就能快速创建细节丰富的三维实景模型,并在项目的整个生命周期内为设计、施工和运营决策提供精确的现实环境背景。 目 录 一、安装过程 1. 安装主程序cncpc040412333en_updt1…

《看聊天记录都学不会C#?太菜了吧》(4)C# 中的尚方宝剑 “先斩后奏”

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

Android之解决多语言适配部分TextView内容左对齐和内容一行不排满就到第二行问题

1 问题 1、多语言适配部分TextView内容左对齐 2、内容一行不排满就到第二行问题 2 解决办法 问题1、在TextView里面加入下面参数 android:gravity="center" 问题2、 import android.content.Context; import android.graphics.Paint; import android.text.TextUti…

如何用 Swift 语言构建一个自定控件

本文译自&#xff1a;How To Make a Custom Control in Swift 用户界面控件是所有应用程序重要的组成部分之一。它们以图形组件的方式呈现给用户&#xff0c;用户可以通过它们与应用程序进行交互。苹果提供了一套控件&#xff0c;例如 UITextField&#xff0c;UIButton&#xf…

【ArcGIS遇上Python】ArcGIS Python获取Shapefile矢量数据字段名称

借助PyCharm环境&#xff0c;在不打开ArcGIS的情况下&#xff0c;编写Python代码&#xff0c;获取矢量数据的所有字段。 import arcpyshp C:\data\out\Export_Output.shp fields arcpy.ListFields(shp) for f in fields:print f.name‘,’f.type运行结果&#xff1a; C:\Pyt…

《聪明人和傻子和程序员》

本文借鉴自鲁迅杂文《聪明人和傻子和奴才》&#xff0c;如有雷同&#xff0c;纯属巧合。有个程序员特别喜欢寻人诉苦&#xff0c;只要一点事&#xff0c;就喜欢诉苦。有一日&#xff0c;他遇到一个聪明人。“大佬。”他悲哀的说&#xff0c;“我们公司待遇越来越差了&#xff0…

c语言 case语句用法,switch ... case语句的用法[组图]

switch ... case语句的用法[组图]08-13栏目&#xff1a;技术TAG&#xff1a;switch case语句switch case语句当情况大于或等于4种的时候就用switch ... case语句copyright jhua.orgswitch(表达式) copyright jhua.org{ https://www.jhua.orgcase 常量1&#xff1a; 语句体1&am…

《看聊天记录都学不会C#?太菜了吧》(5)C# 中可以用中文名变量?

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

Android之TabLayout和ViewPager组合跳转到指定页面

1 问题 TabLayout和ViewPager组合跳转到具体一个页面 2 解决办法 viewPager?.setCurrentItem(index) index为0说明是第一页&#xff0c;如果是1的话就是第二页&#xff0c;以此类推。

【ArcGIS遇上Python】ArcGIS Python中文编码问题案例详解

前面的文章《ArcGIS Python获取Shapefile矢量数据字段名称》我们已经学会了如何用 Python 获取中文路径下的shp数据的所有字段,英文没有问题,但是如果你输出中文路径下的数据字段, 就有可能会碰到中文编码问题。 Python 文件中如果未指定编码,在执行过程会出现报错: impo…

gRPC编码初探(java)

背景&#xff1a;gRPC是一个高性能、通用的开源RPC框架&#xff0c;其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计&#xff0c;基于ProtoBuf(Protocol Buffers)序列化协议开发&#xff0c;且支持众多开发语言。gRPC提供了一种简单的方法来精确地定义服务和为iOS、…

WPF 基础控件之 RadioButton 样式

其他基础控件1.Window2.Button3.CheckBox4.ComboBox5.DataGrid 6.DatePicker7.Expander8.GroupBox9.ListBox10.ListView11.Menu12.PasswordBox13.TextBox14.ProgressBarRadioButton 实现下面的效果1&#xff09;RadioButton来实现动画&#xff1b;Border嵌套 Ellipse并设置Sca…

对归并排序进行c语言编程实现,归并排序及C语言实现

排序系列之(1)归并排序及C语言实现有很多算法在结构上是递归的&#xff1a;为了解决一个给定的问题&#xff0c;算法需要一次或多次递归的调用其本身来解决相关的问题。这些算法通常采用分治策略&#xff1a;将原问题划分成n个规模较小而结构与原问题相似的子问题&#xff1b;递…

Android之提示错误Can not perform this action after onSaveInstanceState

1 问题 主页面3个Fragment,在第三个Fragment里面开启了Activity之后,然后想跳到第一个Fragment代码如下 /*** 展示Fragment*/private fun showFragment(fragment: Fragment) {if (currentFragment !== fragment) {val transaction: FragmentTransaction = supportFragmentMa…

《看聊天记录都学不会C#?太菜了吧》(6)多晦涩的专业术语原来都会那么简单

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

【Python可视化】利用Numpy绘制各种统计图表

NumPy简介 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。 NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质…

这个设计原则,你认同吗?

前言我们都知道依赖注入的方式常见的主要有三种构造函数注入属性注入接口注入在大名鼎鼎的Spring框架中大量使用属性注入的方式&#xff0c;属性注入的方式写起来那是真的爽&#xff1b;而在Asp.NetCore中则不支持属性注入&#xff0c;如果不使用第三方库&#xff0c;我们就只能…

Android之提示Unable to instantiate fragment***MyLikeFragment .could not find Fragment constructor

1 问题 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.appsinnova.android.keepdrop/com.appsinnova.android.keepdrop.account.favorite.activity.MyLikeActivity}: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiat…

SQLServer2008-镜像数据库实施手册(双机)SQL-Server2014同样适用

SQL Server2008R2-镜像数据库实施手册(双机)SQL Server2014同样适用 一、配置主备机 1、 服务器基本信息 主机名称为&#xff1a;HOST_A&#xff0c;IP地址为&#xff1a;192.168.1.155 备机名称为&#xff1a;HOST_B&#xff0c;IP地址为&#xff1a;192.168.1.156 二、主备实…

一万字一篇文20分钟学会C语言和Python,十四年编程经验老鸟传授经验之道

前言 昨天在直播中有粉丝问我如何快速的对编程语言入门&#xff0c;我想这个问题是有必要让大家知道的&#xff0c;相必也有很多新手对于如何快速完成编程语言的入门学习很感兴趣&#xff0c;本篇文将会使用 C 语言以及 Python 为例&#xff0c;做出对比&#xff0c;让大家对编…