安全迁移到EF Core 3.0



我一直在将我的项目从.net core 2.2迁移到3.1 LTS,并更新所有nuget包。在所有这些过程中,我看到我的许多Rest API端点由于EF和DB的一些问题而停止正常工作。

与本文相关的是,目前EF Core 3.0中包含的突破性更改,我们必须立即修复(我们不能保持原样(,才能成功迁移到.net Core 3.1和EF 3.0。

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

查询管道为EF Core 3.0完全重写,因此在技术上有许多突破性的更改。

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

在大多数情况下,它只能归结为一个具有实际影响的突破性变化:

不再在客户端上评估LINQ查询

这是重要的一个。使用AsEnumerable()ToList()可以从查询中的该点显式切换到客户端评估,或者手动拆分查询,其中使用了大量可能导致笛卡尔爆炸的Include()调用。

您也可以等待EF Core 5(或现在使用最新的预览版(,它添加了拆分查询的功能,这是EF Core 3.0之前功能的改进版本,可以明确地为查询启用。

最新更新