Entity Framework7 有哪些不同?现在开发到什么程度了

如题所述

   A、新特性
      a、支持对关系型数据的批量更新。 什么意思就不用细说了吧,在这之前,很多人喷粪EF,就是说他的更新效率太低,如果要实现批量更新,特别插入时,需要借助sql语句或是第三方工具类。相信这是很多人期待的功能;
      b、支持唯一约束。它允许你在实体内除主键外额外标识一个键,将他们用作外键。
   B、行为(Behavior)改变
   在EF6和前期的版本中,顶层API就有很多不直观的行为,虽然EF7尽可能是保持顶层API的相同,但仍去掉了一些限制并添加了一些我们期待的行为。什么意思呢?这听起来有点迷糊,举个例子来说明吧,以前的查询,虽然Linq给我们带来了很大方便,但限制多呀,整个Linq查询翻译成一条单独的sql查询,Linq查询中只能包含EF能翻译成sql的语句或方法;还有就是sql的生成,有时生成了很复杂、效率不高,且不是我们希望的sql语句。EF7改变这种情况,可以返回多结果集,sql评估工作也不是在数据库端来做了,变更到客户端。这样就为生成sql提供了很大的灵活性。如果还有点晕,没关系,先有个印象就行。
   C、变得更加简单、灵活
   直接使用一个例子来说明吧。我们想通过EF的元数据来获取Blog实体被映射到数据库中的哪一张表。在这之前,我们的代码会是这样:

在EF7中会代码会是这样:
using (var db = new BloggingContext())
{
var tableName = db.Model.GetEntityType(typeof(Blog)).Relational().Table;
}
   D、去掉了一些特性
      a、每类型映射多个实体集(MEST)。这个特性,估计用的人很少,正是因为使用的人少,所以才去掉。它是什么意思呢?就是一个类型对应数据库中的多张表,例如:表Product 和 RetriedProduct都映射到Product类。如果你还有这样的需求,使用继承是更好的选择。
      b、非常复杂的类型映射。在EF6.x中,可能在一个继承映射中组合了TPH,TPT和TPC。EF7不再支持这种复杂的映射了,它要求你的CLR 类型尽量跟表结构保持一至。至于为什么,我相同不少人到现在都还没有弄明白什么是TPH,TPT,TPC,那更说不上灵活运行了,这也是导致EF6.x MetadataWorkspace异常复杂的主要原因。
      c、去掉edmx建模。这可能会让很多人失望,因为它曾经给我们带来多么美好的回忆。但它有很多的不足,比较一些复杂的需求,不适应ddd分层设计,不符合现在流行的POCO等。最主要的是,有更好的选择code-based建模,这就是我们常说的code-first。 可能你会有疑问,怎么code-first和edmx是平级概念,它不是跟db-first、model-first平级的吗? 没错,它是跟edmx平级的,更详细的解释请查看我的另一篇博客Code First is a bad name,这些年我们对Code First的理解都错了 !很震惊吧?
      d、去掉ObjectContext API。它陪EF一起成长,到EF4.1时才被DbContext弄到幕后.不过DbContext只是它的外观模式,底层仍然是使用的它。有时需要使用一些高级的功能时,我们还想办法把它找出来。去掉它并不意味着它以前的一些功能不能用了。EF7重写了底层,把之前一定需要它才能使用的api包含在了DbContext中,并且调用更加清晰,简单。
      e、去掉了延迟加载。 这功能相信大家不陌生,它一直被当成EF的一大特点,但现在,它将要从EF7中去掉。我不确定最终的版本微软会不会把它请回来,因为这一点存在很大的争论。无论是我们这些开发人员,还是EF的开发团队。我个人是支持去掉的。一,不是所有的应用都需要延迟加加载;二、不少的EF使用者对它没有深入的去了解,经常会有人问,为什么会出现"无法完成该操作,因为 DbContext 已释放"这样的问题。这说明这个功能反而给一部份使用者带来了困惑。
  这些变化并不是最终的,也许文中说的,会发生改变。当然这里也不可能列出所有的变化点,毕竟EF7还在处于开发过程中。总之,它是一个革命性的版本,以至于有人在争论应该叫他EF7呢,还是EF1。
      E、对非关系型数据库的支持,文章开头部分已经有提到,这里就不多说了。

四、EF7的开发计划
  相信,很多人和我一样,去年就开始期待EF7的发布。一年多长长的等待,可是它还没有出来,到底要什么时候呢?微软的计划是2016年,所以大家得耐心等待。不过,有个好消息是,它是开源的,最新的源代码在github上,如果你想了解更多的细节,可以到下面的地址(https://github.com/aspnet/EntityFramework)去克隆或是下载源代码。下面是EF的开发计划表
温馨提示:内容为网友见解,仅供参考
无其他回答

Entity Framework7 有哪些不同?现在开发到什么程度了
b、非常复杂的类型映射。在EF6.x中,可能在一个继承映射中组合了TPH,TPT和TPC。EF7不再支持这种复杂的映射了,它要求你的CLR 类型尽量跟表结构保持一至。至于为什么,我相同不少人到现在都还没有弄明白什么是TPH,TPT,TPC,那更说不上灵活运行了,这也是导致EF6.x MetadataWorkspace异常复杂的主要原因...

framework7有何优劣?
综上所述,Android app开发虽然入门门槛低,但可能面临就业压力和职业发展的瓶颈;Android framework开发虽然门槛较高,但拥有良好的就业前景和较高的薪资待遇;Android bsp开发\/Linux驱动开发则与嵌入式开发紧密相关,可能适合有特定兴趣和需求的开发者。开发者在选择路径时,应根据个人兴趣、职业规划以及当前...

Entity_Framework 怎么样好用吗?请用过的人谈谈!
比较好用,重要的是MS还在维护EntityFramework,最新的4.2也解决了不少问题,特别是CodeFirst的模式,解决了微软ORM之前依靠配置文件过重的问题

提高entity framework 性能,要注意哪些事情
尽量禁用延迟加载,尽量使用预加载和显式加载查询.如果启用延迟加载,这样会造成多次往返数据库查询的.势必造成性能低下.注意事务的简短性.在使用事务时,要尽量把查询语句或者其他响事务外的语句移在事务外执行.不然让一个事务的时间太长了,就容易引起资源死锁的问题.查询出来的实体,如果不考虑删除和修改,请...

microsoft entity framework 包含哪些功能
1、在Linq to Entity 查询中对列使用类型转换 2、Code-First下用数据迁移更新数据库时使用修改(Alter)代替删除(Dropping)后重新创建 3、删除孤儿(orphans)记录 4、日志记录 Entity Framework7 有哪些改变?1、新特性 a、支持对关系型数据的批量更新。在这之前,就是说他的更新效率太低,如果要...

有哪些好的.net的开源项目?
1. 创建.NET7控制台项目,安装Nuget包LessCode.EFCore、LessCode.EFCore.StronglyTypedIdCommons、LessCode.EFCore.StronglyTypedIdGenerator。同时确保使用SQLServer及EF core迁移,还需安装Microsoft.EntityFrameworkCore.SqlServer、Microsoft.EntityFrameworkCore.Tools。2. 新建实体类型Person,在类上标注[Has...

...Entity Framework 与 Linq 和 Linq to SQL 有什么关系?前者是后者发 ...
Linq 是查询语法,用于对内存里的对象集合或者数据库表进行查询;Linq to SQL 是针对SQL Server数据库设计的ORM(对象映射)方案;Entity Framework是ORM实体框架,同时支持SQL Server;Oracle 等

驱动人生7更新了哪些功能?驱动人生7新功能介绍
Framework 等。即将上线的驱动人生7完美解决了这个问题,以后像《古墓丽影10崛起》《合金装备5幻痛》《刺客信条系列》《DmC:鬼泣》《我的世界》以及神作老滚5之类的大型单机游戏再也不用担心玩不了,驱动人生7新增游戏组件功能,下载体验驱动人生7,让你告别身体被掏空的岁月,开开心心的玩游戏。除了新增...

...DWF Viewer 7、Microsoft.NET Framework 2.0,这三个软件卸了有影响...
它的全名是:「Microsoft XML Core Services」,主要是用来执行或开发经由 XML 所设计的最新应用程序。最好不要卸载,因为有些程序会用到它。如果卸载了用到xml的程序就无法运行 Autodesk DWF Viewer 是DWF文件的浏览器,也不能卸载 Microsoft.NET Framework 这个更是必须的的也不能卸载 ...

microsoft.net framework 是什么, 我电脑都7个 有用吗? 感觉电脑越来...
你看时7个,其实就是2个,其中的5个属于历史版本 举个例子---。net如果不装1.1 2.0.3.0 而直接装3.5的话需要联网,目的就是把前面的版本下载安装,就相当于跟心而已 这2个东西最好是安装,他对系统资源吃的不是很多,不用在意

相似回答