Привязка к базам данных
Обновлен: Ноябрь 2007
Обычно веб-приложения отображают данные из реляционных баз данных, таких как Microsoft SQL Server, Microsoft Access, Oracle и хранилище данных OLEDB или ODBC. Для упрощения задачи привязки элемента управления к данным из базы данных ASP.NET предоставляет элементы управления LinqDataSource и SqlDataSource.
Элемент управления LinqDataSource
Элемент управления LinqDataSource разрешает использовать LINQ на веб-странице ASP.NET в декларативной разметке для извлечения и изменения данных из объекта данных. Этот элемент управления поддерживает автоматическое создание команд выборки, удаления, вставки и обновления. Он также поддерживает сортировку, фильтрацию и разбиение по страницам.
При использовании элемента управления LinqDataSource для взаимодействия с данными из базы данных подключение элемента управления LinqDataSource непосредственно к базе данных не выполняется. Вместо этого он взаимодействует с классами сущностей, представляющими базу данных и таблицы. Классы сущностей можно создать с помощью Сред. Объектно-реляционный конструктор выполнив служебную программу SqlMetal.exe. Дополнительные сведения см. в разделах Реляционный конструктор объектов и Средство создания кода (SqlMetal.exe).
Как правило, создаваемые классы сущностей находятся в папке App_Code веб-приложения. Сред. Объектно-реляционный конструктор или программа SqlMetal.exe создает один класс, представляющий базу данных и по одному классу для каждой таблицы в базе данных.
Элемент управления LinqDataSource подключается к классу базы данных путем присвоения свойству ContextTypeName имени класса, представляющего базу данных. Элемент LinqDataSource подключается к конкретной таблице путем присвоения свойству TableName имени класса, который представляет таблицу. Например чтобы подключиться к таблице Contacts в базе данных AdventureWorks, следует задать в качестве значения свойства ContextTypeName имя класса, такое как AdventureWorksDataContext (или любое имя, указанное для объекта базы данных). Для свойства TableName устанавливается значение Contacts.
В следующем примере показано создание элемента управления LinqDataSource, получающего данные из таблицы с именем Products. Этот элемент управления автоматически создает команды для поддержки выборки, обновления, вставки и удаления данных. Элемент управления DetailsView отображает данные и создает кнопки, с помощью которых пользователи смогут обновлять записи.
<asp:LinqDataSource
ContextTypeName="ExampleDataContext"
TableName="Products"
EnableUpdate="true"
EnableInsert="true"
EnableDelete="true"
ID="LinqDataSource1"
runat="server">
</asp:LinqDataSource>
<asp:DetailsView
DataKeyNames="ProductID"
AutoGenerateEditButton="true"
AutoGenerateDeleteButton="true"
AutoGenerateInsertButton="true"
AllowPaging="true"
DataSourceID="LinqDataSource1"
ID="GridView1"
runat="server">
</asp:DetailsView>
<asp:LinqDataSource
ContextTypeName="ExampleDataContext"
TableName="Products"
EnableUpdate="true"
EnableInsert="true"
EnableDelete="true"
ID="LinqDataSource1"
runat="server">
</asp:LinqDataSource>
<asp:DetailsView
DataKeyNames="ProductID"
AutoGenerateEditButton="true"
AutoGenerateDeleteButton="true"
AutoGenerateInsertButton="true"
AllowPaging="true"
DataSourceID="LinqDataSource1"
ID="GridView1"
runat="server">
</asp:DetailsView>
Дополнительные сведения см. в разделе Общие сведения о серверном веб-элементе управления LinqDataSource.
Элемент управления SqlDataSource
Элемент управления SqlDataSource предоставляет для веб приложения прямое подключение к базе данных. Элементы управления привязки к данным, например GridView, DetailsView и FormView, могут использовать элемент управления SqlDataSource для автоматического извлечения и изменения данных. Команды для выборки, обновления, вставки и удаления данных задаются как часть элемента управления SqlDataSource, и он выполняет эти операции автоматически. Нет необходимости писать код (например код ADO.NET, использующий классы в пространстве имен System.Data), чтобы создать подключение и задать команды для выполнения запросов и обновлений в базе данных.
В следующем примере кода показан элемент управления GridView, привязанный к элементу управления SqlDataSource для извлечения, обновления и удаления данных.
<%@ Page language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>GridView Edit Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>GridView Edit Example</h3>
<!-- The GridView control automatically sets the columns -->
<!-- specified in the datakeynames property as read-only. -->
<!-- No input controls are rendered for these columns in -->
<!-- edit mode. -->
<asp:gridview id="CustomersGridView"
datasourceid="CustomersSqlDataSource"
autogeneratecolumns="true"
autogeneratedeletebutton="true"
autogenerateeditbutton="true"
datakeynames="CustomerID"
runat="server">
</asp:gridview>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Northwind sample database. Use an ASP.NET -->
<!-- expression to retrieve the connection string value -->
<!-- from the Web.config file. -->
<asp:sqldatasource id="CustomersSqlDataSource"
selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]"
updatecommand="Update Customers SET CompanyName=@CompanyName, Address=@Address, City=@City, PostalCode=@PostalCode, Country=@Country WHERE (CustomerID = @CustomerID)"
deletecommand="Delete from Customers where CustomerID = @CustomerID"
connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>"
runat="server">
</asp:sqldatasource>
</form>
</body>
</html>
<%@ Page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>GridView Edit Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>GridView Edit Example</h3>
<!-- The GridView control automatically sets the columns -->
<!-- specified in the datakeynames property as read-only. -->
<!-- No input controls are rendered for these columns in -->
<!-- edit mode. -->
<asp:gridview id="CustomersGridView"
datasourceid="CustomersSqlDataSource"
autogeneratecolumns="true"
autogeneratedeletebutton="true"
autogenerateeditbutton="true"
datakeynames="CustomerID"
runat="server">
</asp:gridview>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Northwind sample database. Use an ASP.NET -->
<!-- expression to retrieve the connection string value -->
<!-- from the Web.config file. -->
<asp:sqldatasource id="CustomersSqlDataSource"
selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]"
updatecommand="Update Customers SET CompanyName=@CompanyName, Address=@Address, City=@City, PostalCode=@PostalCode, Country=@Country WHERE (CustomerID = @CustomerID)"
deletecommand="Delete from Customers where CustomerID = @CustomerID"
connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>"
runat="server">
</asp:sqldatasource>
</form>
</body>
</html>
Элемент управления SqlDataSource напрямую подключается к базе данных и таким образом реализует двухуровневую модель данных. Если необходимо привязать бизнес-объект среднего уровня, выполняющий извлечение и обновление данных, можно воспользоваться элементом управления ObjectDataSource. Дополнительные сведения см. в разделе Привязка к бизнес-объектам.
Дополнительные сведения об элементе управления SqlDataSource см. в разделе Общие сведения о серверном веб-элементе управления SqlDataSource.
Привязка к базе данных Access Microsoft
ASP.NET предоставляет элемент управления AccessDataSource, упрощающий задачу подключения к файлу базы данных Microsoft Access (MDB-файлу). Класс AccessDataSource наследуется от класса SqlDataSource и автоматически подключается к MDB-файлу с помощью поставщика данных System.Data.OleDb .NET Framework и поставщика данных Microsoft.Jet.OLEDB.4.0 OLE DB. Для подключения к базе данных Access путь к файлу предоставляется в свойстве DataFile. За исключением другого способа подключения к базе данных Access Microsoft, элемент управления AccessDataSource работает в точности как элемент управления SqlDataSource. Дополнительные сведения см. в разделе Извлечение данных с помощью серверного веб-элемента управления AccessDataSource.
См. также
Основные понятия
Общие сведения о доступе к данным в ASP.NET
Общие сведения о серверном веб-элементе управления LinqDataSource
Общие сведения о серверном веб-элементе управления SqlDataSource
Извлечение данных с помощью серверного веб-элемента управления AccessDataSource