EF Core 2.0发布,为何用户大呼失落?

.NET
388
0
0
2022-05-14

近日,微软发布Entity Framework Core 2.0终极版以及.NET Core 2.0和ASP.NET Core 2.0。Entity Framework (EF) Core是轻量级跨平台的Entity Framework版本,也是.NET的对象或关系映射框架。

EF Core 2.0发布,为何用户大呼失落?

EF Core此次的最新主要包括更高效、强大的LINQ实现、简化的提供程序模型及其使用的DI。EF Core此次的更新主要是针对最新.NET Standard 2.0。

对LINQ的优化从处理子查询开始,优化后这些子查询不再需要嵌套。而且当请求很少时,LINQ也不再将所有列作为检索对象。

EF.Functions属性也被添加进EF Core,EF.Functions属性可以用于将运算符映射到数据库函数或运算符中,然后在LINQ查询中调用。这个版本还是添加了Like()运算符,因此在查询中可使用EF.Functions.Like(),需要时Like()会被转化成SQL中LIKE形式或者在内存中进行评估。

全局查询过滤器是本次优化的另一个看点,用户可在模型中指定在DbContext中执行的所有查询的实体,但一直被EF Core用户呼声很高的优化点却仍然“缺席”——SQL生成仍不支持GROUP BY。对此微软做出回应:EF Core 2.1版本中会添加该功能。

EF Core 2.0发布,为何用户大呼失落?

另外一个“缺席”的是优化点是对复杂类型的支持。Entity Framework中的复杂类型可用但依赖于所有类型或子类型。所有实体或子实体可以被定义,这些实体可将其他实体中的属性分组,这与EF6中使用的复杂类型非常相似,唯一不同的是它具有包含参考导航属性的能力。

由于Entity Framework Core 2.0中使用不同的语法,所以将EF模型从其他版本引入EF核心变得更加困难。

EF Core 2.0发布,为何用户大呼失落?

用户的另一个失望点是核心SQL概念即存储过程的缺席。存储过程在服务器上执行比将所有数据传输到应用程序进行处理具有更高的效率,但是在2.0版本中却没有这个功能。

其他尚未添加的功能还包括空间类型、延迟加载的支持。这些在完整的Entity Framework版本中应该看到的功能可能只能寄希望于EF Core 2.1版本了。