首页 > 其他 > 详细

EFCore显示加载模式下,自动包含导航属性的方法

时间:2020-06-15 18:29:07      阅读:132      评论:0      收藏:0      [点我收藏+]

在EntityFramework中,其默认加载方式是懒加载,所有查询都会为导航属性创建一个动态代理,这是导致ef性能低的一个原因。
在EFCore中,官方将其默认的加载方式改为了显示加载,即导航属性需要Include才会加载。而大部分时候,在调用Single方法或其他的查询单个数据的时候,我们需要拿到他的导航属性,而如果每次都Include的话就显得很麻烦。
这里我给大家介绍一种自动包含所有导航属性的方法。

private IQueryable<T> IncludeNavProperty()
        {
            var query = _Db.Set<T>().AsQueryable();
            foreach (var nav in _Db.Model.FindEntityType(typeof(T)).GetNavigations())
            {
                query = query.Include(nav.Name);
            }
            return query;
        }

我们可以通过_Db.Model.FindEntityType(typeof(T)).GetNavigations()拿到所有的导航属性,然后包含进去,但这种方式只能拿到第一层导航属性,无法获取导航属性中的导航属性,即ThenInlcude()。

EFCore显示加载模式下,自动包含导航属性的方法

原文:https://www.cnblogs.com/qwfy-y/p/13132346.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!