Привет, у меня следующий вопрос. Предположим, где находятся две таблицы в базе данных:
Clients(
id,
name,
address)
Orders(
id,
name,
desc,
datemodified,
client_id)
Второй ссылается на первый, то есть каждый заказ присваивается клиенту. Теперь предположим, что у меня есть страница ASPX с таблицей LinqDataSource для заказов и GridView, который использует этот источник данных и отображает таблицу со следующими столбцами:
- Название заказа.
- Order desc.
- Имя клиента.
- Адрес клиента.
Насколько я понимаю, Linq to SQL спроектирован таким образом, что по умолчанию он не загружает никаких связанных сущностей, он делает это только при запросе дочернего свойства. Итак, при загрузке страницы возникает следующая ситуация:
- Первый запрос извлечет записи из таблицы «Заказы».
- Для каждой строки, отображаемой GridView, дополнительный запрос будет выполняться при запросе одного из свойств клиента.
Следовательно, если у нас есть 100 заказов, это означает, что будет выполнено 101 запрос вместо одного (или даже 201, если запрос будет выполняться для каждого свойства клиента)? Как избежать этого и заставить LinqDataSource загружать все обязательные поля одним запросом?
Прямо сейчас я вижу единственное решение этой проблемы - используйте SqlDataSource с запросом на соединение, который будет извлекать все необходимые поля сразу.