sql查询中load和include的区别是什么?



我有一个查询,看起来像这样

         var query = db.Customer
            .Include(c => c.Address)
            .Where(c => c.Address.Id > 10)
            .ToList();

当我这样做时

        var query = db.Customer
            .Where(c => c.Address.Id > 10)
            .ToList();
        db.Address
            .Where(a => a.Id > 10)
            .Load();

我得到了相同的结果。

我的问题是:这两个查询返回之间是否有任何差异,并且一个比另一个更受欢迎?

var query = db.Customer
                .Include(c => c.Address)
                .Where(c => c.Address.Id > 10)
                .ToList();

在上面的查询中,所有的相关数据都使用一次数据库访问。

 var query = db.Customer
                .Where(c => c.Address.Id > 10)
                .ToList();
            db.Address
                .Where(a => a.Id > 10)
                .Load();

这里它使用2次数据库访问来获取数据。

Load:

有几种情况,您可能希望从中加载实体将数据库放入上下文中,而无需立即执行任何操作这些实体。这方面的一个很好的例子是为数据加载实体绑定,如本地数据中所述。一种常见的方法是写一个LINQ查询,然后在上面调用ToList,只能立即调用丢弃创建的列表。Load扩展方法的工作原理类似于除了它完全避免了列表的创建。

注意:我们不能说哪个更好。大多数情况下,我们使用急切加载方法(Include)。这很好也很简单。但有时它很慢。所以你需要根据你的数据大小来决定使用哪一个

相关内容

最新更新