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