确认延迟加载 linq 到我的存储库的实体 [简单]

Posted

技术标签:

【中文标题】确认延迟加载 linq 到我的存储库的实体 [简单]【英文标题】:confirm lazy loading linq to entities for my respository [simple] 【发布时间】:2010-12-22 18:28:37 【问题描述】:

简单的问题:

我的存储库的一部分看起来像这样

public class CustomerRepository : IRepository<Customer>

   public IQueryable<Customer> GetAll()
   
     MyDataEntities ent = new MyDataEntities();
     return from c in ent.Customers  select c;
   

现在假设我有 10,000 个客户,如果我这样做:

var cus = from c in GetAll() where c.FirstName == "jon" select c;

请告诉我 GetAll() 不会加载所有这 10,000 个但会延迟加载整个内容?是我需要在某处设置还是自动发生?

我也不知道如何检查它是否是延迟加载的,当实际的 sql 查询被吐到 sql server 时有什么可看的吗?

对不起,我的无知。

【问题讨论】:

【参考方案1】:

是的,它会的。由于您的GetAll 正在返回IQueryable。验证这种情况发生的一种简单方法是打开分析器并查看正在执行的查询。或者在调试器中调查IQueryable 对象。

【讨论】:

你能详细说明我在哪里可以看到个人资料吗?我正在使用 sql management studio express 2008 r2 + VS 2010 好的,找到了这个但是有更新的选项:***.com/questions/760321/… 我不确定它是否包含在快速版本中。也许这个可以用:sites.google.com/site/sqlprofiler。否则,您可以使用 Visual Studio 调试器并查看 cus 对象并在那里查找查询。 啊没想到...非常感谢..我想我可以试试code.google.com/p/sqlexpressprofiler

以上是关于确认延迟加载 linq 到我的存储库的实体 [简单]的主要内容,如果未能解决你的问题,请参考以下文章

EF延迟加载

通过 LINQ-to-SQl 加载数据集

ASP.NET Mvc开发之EF延迟加载

错误 3002:映射片段中的问题 | c# linq 到实体

如何使用实体框架将大量数据延迟加载到 GridView [关闭]

linq之延迟加载和即时加载+标准查询运算符