【发布时间】:2011-03-04 18:13:38
【问题描述】:
您好,我有以下问题。假设数据库中有两个表:
Clients(
id,
name,
address)
Orders(
id,
name,
desc,
datemodified,
client_id)
第二个引用第一个,即每个订单都分配给客户。现在假设我有一个 .aspx 页面,其中有一个 LinqDataSource 用于 Orders 表,以及一个使用此数据源并显示具有以下列的表的 GridView:
- 订单名称。
- 订单说明。
- 客户名称。
- 客户端地址。
据我了解,Linq to SQL 的设计方式是,默认情况下它不加载任何关联实体,仅在请求子属性时才加载。所以,当一个页面被加载时,会出现如下情况:
- 第一个查询将从 Orders 表中检索记录。
- 对于 GridView 显示的每一行,当请求其中一个客户端属性时,将执行一个附加查询。
因此,如果我们有 100 个订单,这意味着将执行 101 个查询而不是一个(或者甚至可能是 201 个,如果将为每个客户端属性执行一个查询)?如何避免这种情况并让 LinqDataSource 通过单个查询加载所有必填字段?
现在我看到了解决此问题的唯一方法 - 将 SqlDataSource 与连接查询一起使用,这将一次检索所有必填字段。
【问题讨论】:
标签: asp.net linq-to-sql gridview linqdatasource