安全迁移到EF Core 3.0

时间:2020-07-27 20:10:50

标签: c# entity-framework .net-core entity-framework-core asp.net-core-3.1

我一直将我的项目从.net core 2.2迁移到3.1 LTS,并且还更新了所有nuget软件包,并且在完成所有此过程之后,我发现很多Rest API端点由于EF和DB的某些问题而无法正常工作

与这篇文章Breaking changes included in EF Core 3.0相关,目前我们有很多重大更改,我们必须立即进行修复(不能只保留原样)以成功迁移到.net core 3.1和EF 3.0。 / p>

问题是,如何安全迁移到EF Core 3.0,以及如何找到所有需要修复LINQ查询的地方?

1 个答案:

答案 0 :(得分:2)

对于EF Core 3.0,查询管道已完全重写,因此从技术上讲,有很多重大更改。

在实践中,它归结为一些应检查的内容。这些标记有high影响。您可以忽略有关EF Core 3.0和.NET Standard 2.1的内容,因为EF Core 3.1再次与.NET Standard 2.0兼容。

在大多数情况下,它只能归结为一项具有实际影响的重大变更:

LINQ queries are no longer evaluated on the client

这是重要的。使用AsEnumerable()ToList()从查询中的那个点显式切换到客户端评估,或者手动拆分查询,在此情况下,您会使用大量Include()调用,这些调用可能导致{ {3}}。

您还可以等待EF Core 5(或现在使用最新预览),它添加了cartesian explosion的功能,此功能是EF Core 3.0之前版本的改进版本,可以明确地已启用查询。