Практическое руководство. Обновление, вставка и удаление данных с использованием элемента управления LinqDataSource
Обновлен: Ноябрь 2007
Используя элемент управления LinqDataSource можно создавать веб-страницы, позволяющие пользователям обновлять, вставлять и удалять данные. Нет необходимости указывать команды SQL, поскольку для этих операций элемент управления LinqDataSource использует динамически созданные команды. Чтобы пользователь мог изменять данные, можно разрешить операции обновления, вставки или удаления в элементе управления LinqDataSource. После этого можно подключить элемент управления к элементу управления с привязкой к данным, позволяющему пользователям обновлять данные, такому как элемент управления DetailsView или GridView. Чтобы настроить обновляемые значения, можно добавить параметры или создать обработчик событий и изменять значения динамически.
В этом разделе описан способ использования элемента управления LinqDataSource для автоматического разрешения операций обновления, вставки и удаления. Здесь также описана процедура настройки обновляемых значений. И, наконец, в этом разделе демонстрируется процесс создания обработчика событий для программного задания свойства до вставки или удаления записи базы данных.
Эти этапы разрешения операций автоматического обновления, вставки и удаления аналогичны, поэтому процедуры в этом разделе демонстрируют подключение всех трех функций. Однако все три функции подключать необязательно. Можно подключить только необходимые функции.
Сведения об элементе управления LinqDataSource см. в разделах Общие сведения о серверном веб-элементе управления LinqDataSource и Пошаговое руководство. Извлечение, обновление, вставка и удаление данных с помощью элементов управления LinqDataSource и DetailsView.
Автоматическое обновление, вставка и удаление данных
Чтобы элемент управления LinqDataSource автоматически обрабатывал обновление данных, необходимо выполнить следующие параметры:
Объект, заданный в свойстве ContextTypeName, должен быть производным от класса DataContext.
Одному или нескольким из свойств EnableUpdate, EnableDelete или EnableInsert необходимо присвоить значение true.
Разрешение операций обновления, вставки и удаления данных
Добавьте элемент управления LinqDataSource на веб-страницу ASP.NET.
Присвойте в качестве значения свойства ContextTypeName имя объекта, производного от класса DataContext.
При использовании конструктора взаимоотношений объектов в Visual Studio 2008 для создания класса, представляющего таблицу базы данных SQL, созданный класса автоматически является производным от DataContext.
В качестве значения TableName укажите имя класса сущностей, представляющего связанную таблицу базы данных.
Присвойте свойствам EnableUpdate, EnableDelete и EnableInsert элемента управления LinqDataSource значение true.
Добавьте элемент управления с привязкой к данным (например, элемент управления DetailsView) и присвойте его свойству DataSourceID значение идентификатора элемента управления LinqDataSource.
В качестве значения свойства DataKeyNames элемента управления данными укажите имя столбца или столбцов первичного ключа таблицы.
Предусмотрите в элементе управления с привязкой к данным способ, которым пользователи могут переходить в режим обновления, удаления или редактирования.
Например, можно добавить к элементу управления с привязкой к данным кнопки или разрешить элементу управления автоматически создавать такие кнопки.
В следующем примере иллюстрируется декларативная разметка для части веб-страницы ASP.NET, содержащей элементы управления LinqDataSource и DetailsView. Настройка этих элементов управления позволяет пользователю отображать, обновлять, вставлять и удалять данные в таблице с именем «Products».
<asp:LinqDataSource ContextTypeName="ExampleDataContext" TableName="Products" EnableUpdate="true" EnableInsert="true" EnableDelete="true" ID="LinqDataSource1" runat="server"> </asp:LinqDataSource> <asp:DetailsView DataSourceID="LinqDataSource1" DataKeyNames="ProductID" AutoGenerateEditButton="true" AutoGenerateDeleteButton="true" AutoGenerateInsertButton="true" AllowPaging="true" ID="DetailsView1" runat="server"> </asp:DetailsView>
Добавление параметров для обновления, вставки или удаления данных
По умолчанию параметры для обновления, вставки или удаления данных добавлять необязательно. Элемент управления с привязкой к данным передает свои значения элементу управления LinqDataSource, а элемент управления LinqDataSource использует эти значения для задания соответствующего свойства. LINQ to SQL создает команды изменения источника данных. Дополнительные сведения см. в разделе LINQ to SQL.
Также можно указать параметры для операций обновления, вставки или удаления. Это можно сделать, чтобы предоставить значение по умолчанию или определить необходимость преобразования строковых значений в null. Нет необходимости задавать параметр для каждого обновляемого или вставляемого значения: параметр задается только для настраиваемых значений. Все значения, не определенные параметром, обрабатываются автоматически элементом управления LinqDataSource.
Элемент управления LinqDataSource содержит следующие коллекции для управления параметрами: UpdateParameters, InsertParameters и DeleteParameters.
Добавление параметров для обновления, вставки и удаления данных
Добавьте определения параметра для каждого значения, которое необходимо изменить.
В следующем примере демонстрируется способ добавления параметра для свойства с именем Category. Параметр добавляется как к коллекции UpdateParameters, так и к коллекции InsertParameters.
<asp:LinqDataSource ContextTypeName="ExampleDataContext" TableName="Products" EnableUpdate="true" EnableInsert="true" EnableDelete="true" ID="LinqDataSource1" runat="server"> <UpdateParameters> <asp:Parameter Name="Category" DefaultValue="Miscellaneous" /> </UpdateParameters> <InsertParameters> <asp:Parameter Name="Category" DefaultValue="Miscellaneous" /> </InsertParameters> </asp:LinqDataSource>
Если пользователь не вводит значение для свойства Category, в базе данных сохраняется значение по умолчанию.
Задание значений программным способом
Чтобы задать свойства программным способом до выполнения операции над данными, можно создать обработчики для событий Inserting, Updating и Deleting элемента управления LinqDataSource. Все свойства, не заданные в обработчике событий, задаются автоматически элементом управления LinqDataSource.
Задание значений программным способом
Создайте обработчик для события Inserting, Updating или Deleting элемента управления LinqDataSource.
Добавьте код к обработчику событий, который программно задает значение, которое следует изменить.
Данные для обновления, вставки и удаления находятся в следующих свойствах:
Событие
Свойство
Класс
Все эти свойства возвращают объект типа Object. Объект, возвращенный этими свойствами, можно привести к типу класса сущностей, представляющего данные. После приведения можно задать свойства для этого типа.
В следующем примере демонстрируется обработчик для события Inserting, задающий столбец DateModified для текущей даты и времени. Он приводит объект в свойстве NewObject к типу Product.
Protected Sub LinqDataSource_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.LinqDataSourceInsertEventArgs) Dim product As Product product = CType(e.NewObject, Product) product.DateModified = DateTime.Now End Sub
protected void LinqDataSource_Inserting(object sender, LinqDataSourceInsertEventArgs e) { Product product = (Product)e.NewObject; product.DateModified = DateTime.Now; }
В следующем примере демонстрируется декларативная разметка для элемента управления LinqDataSource, привязывающего метод LinqDataSource_Inserting к событию Inserting.
<asp:LinqDataSource ContextTypeName="ExampleDataContext" TableName="Products" OnInserting="LinqDataSource_Inserting" EnableUpdate="true" EnableInsert="true" EnableDelete="true" ID="LinqDataSource1" runat="server"> </asp:LinqDataSource>
Компиляция кода
Для обновления, вставки или удаления данных с помощью элемента управления LinqDataSource необходимо создать класс сущностей, представляющий таблицу базы данных. Можно создать класс сущностей, используя конструктор взаимоотношений объектов в Visual Studio 2008.
Безопасность
В этом примере используется текстовое поле, куда пользователь вводит данные, которые представляют потенциальную угрозу безопасности. По умолчанию веб-страницы ASP.NET проверяют введенные пользователем данные на наличие сценариев и HTML-элементов. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.
Сведения о хранении строки подключения см. в разделе Практическое руководство. Безопасность строк подключения при использовании элементов управления источником данных.
Дополнительные сведения о запрете отображения конфиденциальной информации в сообщениях об ошибках см. в разделе Практическое руководство. Отображение безопасных сообщений об ошибках.
См. также
Основные понятия
Общие сведения о серверном веб-элементе управления LinqDataSource