Многоуровневые и удаленные приложения с 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 на уровне доступа к данным.
Дополнительные источники
Дополнительные сведения о развертывании многоуровневого приложения, использующего LINQ to SQL, см. в следующих разделах.
Технология LINQ to SQL в многоуровневых приложениях с веб-службами
Получение данных и операции CUD в многоуровневых приложениях (LINQ to SQL)
Дополнительные сведения о многоуровневых приложениях, использующих ADO.NET DataSets, см в разделе Многоуровневые приложения для работы с данными.