内容简介:Entity Framework Core 3.0 和 Entity Framework 6.3 通用版发布了,接下来我们看看它的新内容: Entity Framework Core 3.0 EF Core 3.0 包括主要特性、小部分增强和错误修复,以下是一些重要内容: LINQ overh...
Entity Framework Core 3.0 和 Entity Framework 6.3 通用版发布了,接下来我们看看它的新内容:
Entity Framework Core 3.0
EF Core 3.0 包括主要特性、小部分增强和错误修复,以下是一些重要内容:
LINQ overhaul
重构了 LINQ Provider,以便能够将更多的查询模式转换为 SQL,在更多情况下生成高效的查询,并防止低效率的查询无法被检测到。新的 LINQ Provider 是能在未来版本中提供新的查询功能和性能改进的基础,而不会破坏现有的应用程序和数据提供程序。
Cosmos DB 支持
EF Core 的 Cosmos DB Provider 让熟悉 EF 编程模型的开发人员能够轻松地将 Azure Cosmos DB 作为应用程序数据库。其目标是使 Cosmos DB 的一些优点,如全球分布(Global distribution)、“always on”可用性、弹性可伸缩性和低延迟,被 .NET 开发人员更容易访问。Cosmos DB Provider 针对 Cosmos DB 中的 SQL API 启用了大多数 EF Core 功能,如自动更改跟踪、LINQ 和值转换。
C# 8.0 支持
EF Core 3.0 利用了 C# 8.0 中的一些新特性:
- 异步流:异步查询结果现在使用新标准 IAsyncEnDigable<T> 接口公开,并且可以使用 await foreach
- 可空引用类型:在代码中启用此新功能时,EF Core 检查引用类型属性的空值性,并将其应用于数据库中相应的列和关系
拦截数据库操作
EF Core 3.0 中的包含新的 API,用于拦截数据库操作。这与 EF 6 中存在的截取功能非常相似,它允许编写简单的逻辑,只要打开数据库连接、提交事务或执行查询,EFCore 就会自动调用该逻辑。拦截器通常允许在操作发生之前或之后拦截它们。当在它们发生之前拦截它们时,可以旁路执行并提供截取逻辑的备用结果。
例如,要操作命令文本,可以创建一个 IDbCommandInterceptor:
public class HintCommandInterceptor : DbCommandInterceptor
{
public override InterceptionResult ReaderExecuting(
DbCommand command,
CommandEventData eventData,
InterceptionResult result)
{
// Manipulate the command text, etc. here...
command.CommandText += " OPTION (OPTIMIZE FOR UNKNOWN)";
return result;
}
}
并将其注册到你的 DbContext 中:
services.AddDbContext(b => b
.UseSqlServer(connectionString)
.AddInterceptors(new HintCommandInterceptor()));
数据库视图的逆向工程
Query Types(表示可以从数据库读取但未更新的数据),现在重命名为 keyless entity types。由于 EF Core 非常适合在大多数场景中映射数据库视图,所以现可在反向工程数据库视图时自动创建 keyless entity types。
例如,使用 DotNet EF 命令行工具(dotnet ef command-line tool),键入:
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer
该 工具 将自动为没有键的视图和表,提供 scaffold types:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Names>(entity =>
{
entity.HasNoKey();
entity.ToView("Names");
});
modelBuilder.Entity<Things>(entity =>
{
entity.HasNoKey();
});
}
与主体共享表的依赖实体是可选的
从 EF Core 3.0 开始,如果 OrderDetails 属于 Order 或显式映射到同一个表,则可以在没有 OrderDetails 和所有 OrderDetails 属性的情况下添加 Order,但主键将映射到可空列。
当查询时,如果它必要属性不存在值,或者它除了主键之外没有必要属性,EF Core 会将 OrderDetails 设置为 null。
public class Order
{
public int Id { get; set; }
public int CustomerId { get; set; }
public OrderDetails Details { get; set; }
}
[Owned]
public class OrderDetails
{
public int Id { get; set; }
public string ShippingAddress { get; set; }
}
Entity Framework 6.3
最新版本的 EF 6 移植到 .NET Core 3.0 上,以下是一些最显著的改进:
- 支持 .NET Core 3.0
- 除了 .NET Framework 4.0 和 4.5 之外,EF 6.3 runtime 包现支持 .NET Standard 2.1
- 迁移命令已被重写,以执行进程外和使用 SDK 样式的项目
- 对 SQL Server 层次结构的支持
- 改进与 Roslyn 和 NuGet PackageReference 的兼容性
- 添加了 ef6.exe 实用程序,取代了 portate.exe,用于启用、添加、编写脚本和应用来自程序集的迁移
在 .NET Core 中使用 EF 6.3 有一定的限制。例如:
- 数据提供程序也需要移植到 .NET Core。然而只移植了包含在 EF 6.3 包中的 SQL Server 提供程序
- spatial 支持不会在 SQL Server 中启用,因为 spatial 类型无法使用 .NET Core
- 目前不支持在 .NET Core 或 .NET Standard 项目上直接使用 EF designer
详情见发布说明:
https://devblogs.microsoft.com/dotnet/announcing-ef-core-3-0-and-ef-6-3-general-availability/
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- NPM包(模块)发布、更新、撤销发布
- 有赞灰度发布与蓝绿发布实践
- 【重磅发布】Linkis 0.10.0 版本发布
- BeetlSQL 3.0.9 发布,Idea 插件发布
- 贝密游戏 0.7.0 发布,发布斗地主
- 【重磅发布】DataSphere Studio 0.9.0 版本发布
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Data Mining
Bing Liu / Springer / 2011-6-26 / CAD 61.50
Web mining aims to discover useful information and knowledge from Web hyperlinks, page contents, and usage data. Although Web mining uses many conventional data mining techniques, it is not purely an ......一起来看看 《Web Data Mining》 这本书的介绍吧!
Base64 编码/解码
Base64 编码/解码
html转js在线工具
html转js在线工具