zoukankan      html  css  js  c++  java
  • EF Core 1.0中使用Include的小技巧

    (此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注。)

    题记:由于EF Core暂时不支持Lazy Loading,所以利用Include来加载额外数据就显得很有必要。今天分享一个使用Include的小技巧。

    在实体框架Entity Framework 6及之前的版本中,数据模型的导航属性只要加上virtual关键字,在你访问这个属性的时候(不管是对象还是对象集合),EF的内部机制就会自动加载相关数据。这一特性就称之为Lazy Loading,其为开发带来极大方便(尤其需要快速开发的时候),因为不用操心去查询关联数据。当然缺点也很明显,就是这种查询方式其实是低效的,且在某些情况下使用不当也会造成性能问题。

    当然除了使用Lazy Loading外,你还可以使用Include来预先加载关联数据(执行一次查询返回多个数据结果),此特性称之为Eagerly Loading。而在Entity Framework Core 1.0中,目前暂时没有提供Lazy Loading的特性,所以要加载关联数据的话,一般就采用Include方法。

    在EF6.x和EF Core 1.0中,Include的使用基本一致,不过在加载多级数据的时候就有所不同了。EF6.x的方式比较简单直接,详细见:https://msdn.microsoft.com/zh-cn/data/jj574232#eagerLevels,在EF Core 1.0中就需要用到新的ThenInclude方法。详细用法见我下面的示例代码:

    var get = await db2.Sites
        .Include(o => o.ArticleColumns).ThenInclude(o => o.Categories)
        .Include(o => o.ArticleColumns).ThenInclude(o => o.Articles)
        .SingleOrDefaultAsync(o => o.Id == site.Id);

    完整的示例代码见:http://git.oschina.net/ike/codes/jtu9dnsk3pe6x24clbq50

    以上代码也给出了如何在内存中测试EF Core的模型。

  • 相关阅读:
    虚拟机中硬盘扩展方法
    ubuntu postgresql install
    vim python
    oe7报表的中文乱码
    文件导入 import
    How do I list user defined types in a SQL Server database
    修改表结构
    查询数据库中所有的表和数据库架构
    Dev chartControl添加提示层信息
    最简单的日志
  • 原文地址:https://www.cnblogs.com/redmoon/p/5221754.html
Copyright © 2011-2022 走看看