• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

加速LinqDataSource

asp.net 来源:SPIRiT_1984 10次浏览

问候,我有一个以下问题。假设其中有两个表中的数据库:加速LinqDataSource

Clients(
    id, 
    name, 
    address) 

Orders(
    id, 
    name, 
    desc, 
    datemodified, 
    client_id) 

第二个引用的第一个,即每个订单分配给客户端。现在假设我有一个.aspx页面与的LinqDataSource的订单表,使用该数据源,并显示一个表有以下几列一个GridView:

  1. 订单名称。
  2. 订单描述
  3. 客户名称。
  4. 客户地址。

据我所知,Linq to SQL的设计方式是,默认情况下它不会加载任何关联的实体,只有在请求子属性时才会这样做。因此,加载页面时,会发生以下情况:

  1. 第一个查询将从订单表中检索记录。
  2. 对于由GridView显示的每一行,当请求一个客户端属性时将执行额外的查询。

因此,如果我们有100个订单,这意味着将执行101个查询而不是1个(或者甚至可能201个,如果对每个客户端属性执行查询)?如何避免这种情况,并使LinqDataSource通过单个查询加载所有必填字段?

现在我看到了这个问题的唯一解决方法 – 使用一个带连接查询的SqlDataSource,它将一次检索所有必填字段。

===========解决方案如下:

这里设置LoadOptions在LinqDataSource.ContextCreated事件

看看如何做到这一点 http://codebetter.com/davidhayden/2007/08/06/linq-to-sql-query-tuning-for-performance-optimization/


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)