Поделиться через


Многоуровневые и удаленные приложения с LINQ to SQL

Обновлен: November 2007

Существует возможность создания многоуровневых приложений, использующих LINQ to SQL. LINQ to SQL, контекст данных, классы сущностей и логики конструкций запросов обычно размещаются на среднем уровне, являющемся уровнем доступа к данным (DAL). Бизнес-логика и непостоянные данные могут быть полностью реализованы в разделяемых классах, методах сущностей, контексте данных либо в отдельных классах.

Уровень клиента или представления вызывает методы в удаленном интерфейсе среднего уровня; DAL в этом интерфейсе выполнит запросы или хранимые процедуры, сопоставленные методам DataContext. Обычно средний уровень возвращает данные клиентам в виде XML-представлений сущностей или прокси-объектов.

На среднем уровне сущности создаются при помощи контекста данных, который отслеживает их состояние и управляет отложенной загрузкой из базы данных и передачей изменений в базу данных. Эти сущности присоединены к DataContext. Однако после отправки сущностей на другой уровень с помощью сериализации происходит их отсоединение, означающее, что DataContext больше не отслеживает их состояние. Сущности, отправляемые клиентом обратно для обновлений, следует повторно присоединить к контексту данных, прежде чем LINQ to SQL сможет отправить изменения в базу данных. Если для проверок оптимистической блокировки требуются исходные значения и/или метки времени, клиент должен предоставить их обратно на средний уровень.

В приложениях ASP.NET LinqDataSource управляет большей частью данного сложного процесса. Дополнительные сведения см. в разделе Общие сведения о серверном веб-элементе управления LinqDataSource.

На следующих рисунках показана основная архитектура многоуровневого приложения, использующего LINQ to SQL на уровне доступа к данным.

N-уровневая архитектура LINQ to SQL

Дополнительные источники

Дополнительные сведения о развертывании многоуровневого приложения, использующего LINQ to SQL, см. в следующих разделах.

Дополнительные сведения о многоуровневых приложениях, использующих ADO.NET DataSets, см в разделе Многоуровневые приложения для работы с данными.

См. также

Другие ресурсы

Дополнительные сведения (LINQ to SQL)