加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

entity-framework – 实体框架中的延迟加载,延迟加载和Eager加载

发布时间:2020-12-15 00:54:06 所属栏目:Java 来源:网络整理
导读:这三种类型的装载有什么区别?有人能解释一个例子吗?在线不同的资源使用不同的定义,导致比必要的更多混乱. 解决方法 延迟加载和延迟是相当的同义词(AFAIK,如果我错了请纠正我). Eager和Lazy之间有很大的不同.渴望将在前面发生,Lazy只在“按需”发生并且执行
这三种类型的装载有什么区别?有人能解释一个例子吗?在线不同的资源使用不同的定义,导致比必要的更多混乱.

解决方法

延迟加载和延迟是相当的同义词(AFAIK,如果我错了请纠正我). Eager和Lazy之间有很大的不同.渴望将在前面发生,Lazy只在“按需”发生并且执行将在DB级别发生 – 让我们以一个简单的JOIN语句为例
var people = (from p in people SELECT p).ToList();
var jobs = (from j in jobs SELECT j).ToList();

var peopleAndJobs = (from p in people JOIN j on j.personId equals p.personId SELECT p).ToList()

这是急切加载的一个例子.我们得到所有人,所有工作,我们正在加入记忆.不是很聪明(通常).这就是懒惰风格.

var people = (from p in people SELECT p);
var jobs = (from j in jobs SELECT j);

var peopleAndJobs = (from p in people JOIN j on j.personId equals p.personId SELECT p).ToList()

这样做是为人和工作创建一个IQueryable(IQueryable是懒惰的),并且连接发生在数据库中.这样可以节省网络活动,并且通常实际上更快,因为DB已经过优化以进行连接等.

除非我们明确说“我需要那些数据!” (通过ToListing,迭代它等)它是懒惰的.还有一些更多的怪癖,但这应该是一个不错的入门.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读