HTML5技术

EntityFramework Core 1.1有哪些新特性呢?我们需要知道 - JeffckyWang(3)

字号+ 作者:H5之家 来源:H5之家 2017-01-22 18:01 我要评论( )

public virtual IEnumerableT AllIncluding( params ExpressionFuncT, object [] includeProperties){IQueryable T query = _context.SetT (); foreach ( var includeProperty in includeProperties){query = query

public virtual IEnumerable<T> AllIncluding(params Expression<Func<T, object>>[] includeProperties) { IQueryable<T> query = _context.Set<T>(); foreach (var includeProperty in includeProperties) { query = query.Include(includeProperty); } return query.AsEnumerable(); }

我们进行如下查询:

var blog = _blogRepository.GetSingle(d => d.Id == 1, d => d.Posts);

我们上述稍微改造了一下,为了以免查询出现错误,测试查询一下,如下,没毛病。

 

显式加载(Explicit Loading) 

貌似显式加载没有什么应用的场景,不知道是否是应对某些特定的场景而给,它只是加载被上下文跟踪实体的导航属性,通过Include我们也可以实现,如下:

var blog = _efCoreContext.Set<Blog>().Find(1); _efCoreContext.Entry(blog).Collection(b => b.Posts).Load(); _efCoreContext.Entry(blog).Reference(b => b.Posts).Load();

连接弹性(Connection resiliency) 

所谓的连接弹性则是执行数据库命令失败时我们可以重试,我们可以在OnConfiguring或者Startup.cs中设置,如下:

OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder .UseSqlServer( , options => options.EnableRetryOnFailure()); }

SQL Server内存优化表支持

内存优化表是SQL Server的一个特性,它将整个表驻留在内存中,在磁盘上保留着对表的副本,主要是用于持久化,在数据库恢复时(比如重启)在内存优化表中的数据从磁盘上仅仅只是进行读取。比如对Blog表进行内存优化设置,如下:

OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Blog>() .ForSqlServerIsMemoryOptimized(); }

将实体映射到内存优化中的表,当使用EF Core基于我们的模型创建数据库时,此时这些实体也将在内存优化表中创建一份。

简化服务更换(Simplify switch services)

在EF Core 1.0中就可以实现服务更换,但是略显复杂,在EF Core 1.1中替换服务类似于依赖注入一样,如下:

OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(); optionsBuilder.ReplaceService<SqlServerTypeMapper, MyCustomSqlServerTypeMapper>(); }

在EF 6.x之前版本中因为导航属性的存在很容易导致循环引用,所以对于EF Core同样是如此我们需要在Startup.cs中忽略循环引用,如下:

services.AddMvc() .AddJsonOptions( options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore );

总结

本节我们比较详细的讲解了EF Core 1.1中新添加或改善的特性,我们重点讲述了Backing Fileds特性。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • CoreCLR源码探索(二) new是什么 - q303248153

    CoreCLR源码探索(二) new是什么 - q303248153

    2017-01-12 09:04

  • CoreCLR源码探索(一) Object是什么 - q303248153

    CoreCLR源码探索(一) Object是什么 - q303248153

    2017-01-06 11:04

  • 重点必看:小程序的服务范围限制有哪些? - 腾讯攻城师lee

    重点必看:小程序的服务范围限制有哪些? - 腾讯攻城师lee

    2016-12-29 13:03

  • 观点:哪些小程序会最先抢占到小程序的红利 - 腾讯攻城师lee

    观点:哪些小程序会最先抢占到小程序的红利 - 腾讯攻城师lee

    2016-12-17 14:00

网友点评
a