微录客福利,用户名注册,猎场35集
今天我们将推出ef core 2.2的最终版本,以及asp.net core 2.2和.net core 2.2 。这是我们的开源和跨平台对象数据库映射技术的最新版本。
ef core 2.2 rtm包含一百多个错误修复和一些新功能:
空间数据可用于表示对象的物理位置和形状。许多数据库可以本地存储,索引和查询空间数据。常见方案包括查询给定距离内的对象,以及测试多边形是否包含给定位置。 ef core 2.2现在支持使用nettopologysuite (nts)库中的类型处理来自各种数据库的空间数据。
空间数据支持是作为一系列特定于提供者的扩展包实现的。这些包中的每一个都为nts类型和方法以及数据库中相应的空间类型和功能提供映射。此类提供程序扩展现在可用于sql server , sqlite和postgresql (来自 )。空间类型可以直接与ef core内存提供程序一起使用,无需额外扩展。
安装提供程序扩展后,可以向实体添加支持的类型的属性。例如:
using nettopologysuite.geometries;
namespace myapp
{
public class friend
{
[key]
public string name { get; set; }[required] public point location { get; set; }}
}
然后,您可以使用空间数据保留实体:
using (var context = new mydbcontext())
{
context.add(
new friend
{
name = "bill",
location = new point(-122.34877, 47.6233355) {srid = 4326 }
});
context.savechanges();
}
您可以根据空间数据和操作执行数据库查询:
var nearestfriends =
(from f in context.friends
orderby f.location.distance(mylocation) descending
select f).take(5).tolist();
有关此功能的更多信息,请参阅 。
ef core 2.0增加了在一对一关联中建立所有权模型的能力。 ef core 2.2扩展了将所有权表达为一对多关联的能力。所有权有助于限制实体的使用方式。
例如,拥有的实体: - 只能出现在其他实体类型的导航属性上。 - 自动加载,并且只能由dbcontext与其所有者一起跟踪。
在关系数据库中,拥有的集合映射到所有者的单独表,就像常规的一对多关联一样。但是在面向文档的数据库中,我们计划将拥有的实体(在拥有的集合或引用中)嵌套在与所有者相同的文档中。
您可以通过调用新的ownsmany()api来使用该功能:
modelbuilder.entity<customer>().ownsmany(c => c.addresses);
有关更多信息,请参阅 。
此功能简化了代码中的linq查询与日志中捕获的生成的sql查询的关联。
要利用查询标记,请使用新的tagwith()方法注释linq查询。使用前一个示例中的空间查询:
var nearestfriends =
(from f in context.friends.tagwith(@"this is my spatial query!")
orderby f.location.distance(mylocation) descending
select f).take(5).tolist();
此linq查询将生成以下sql输出:
-- this is my spatial query!
select top(@__p_1) [f].[name], [f].[location]
from [friends] as [f]
order by [f].[location].stdistance(@__mylocation_0) desc
有关更多信息,请参阅 。
ef core nuget包可以在nuget gallery上获得 ,也可以作为asp.net core 2.2和新的.net core sdk的一部分 。
如果要在基于asp.net core的应用程序中使用ef core,我们建议您首先将应用程序升级到asp.net core 2.2 。
通常,在应用程序中使用ef core的最佳方法是为应用程序将使用的提供程序安装相应的nuget包。例如,要从命令行在.net core项目中添加2.2版本的sql server提供程序,请使用:
$ dotnet add package microsoft.entityframeworkcore.sqlserver -v 2.2.0
或者从visual studio中的程序包管理器控制台:
pm> install-package microsoft.entityframeworkcore.sqlserver -version 2.2.0
有关如何将ef core添加到项目的更多信息,请参阅有关安装entity framework core的文档 。
我们花了很多时间和精力确保ef core 2.2向后兼容现有的ef core 2.1提供程序,并且更新应用程序以在ef core 2.2上构建不会导致兼容性问题。我们预计大多数升级都会顺利进行,但如果您发现任何意外问题,请向我们的问题跟踪器报告。
ef core 2.2中存在一个已知的更改,可能需要在应用程序代码中进行少量更新。有关更多详细信息,请阅读以下问题的说明:
我们打算维护一份可能需要调整问题跟踪器上现有代码的问题列表。
随着ef core 2.2的出现,我们的主要关注点是ef core 3.0。我们仍需要弄清楚下一个主要版本的几个细节,但这里是我们目前所知的一些主要主题:
dictionary<string, object>
这样简单的实例)表示同一ef core模型中的不同实体类型。此功能是支持多对多关系的垫脚石,没有连接实体,这是ef core最需要的改进之一。 ef团队感谢大家对ef core 2.2的所有社区反馈和贡献。再一次,您可以报告在我们的问题跟踪器中找到的任何新问题。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Net Core Web Api项目与在NginX下发布的方法
asp.net core3.1 引用的元包dll版本兼容性问题解决方案
IdentityServer4实现.Net Core API接口权限认证(快速入门)
ASP.NET Core MVC通过IViewLocationExpander扩展视图搜索路径的实现
网友评论