Чтение онлайн

на главную - закладки

Жанры

Шрифт:

? ConstraintCollection, Constraint, UniqueConstraint — представляют ограничения, которые могут быть наложены на объекты DataColumn.ConstraintCollection содержит набор таких ограничений для объекта DataTable;

? DataView — объект, позволяющий привязывать данные из DataTable к формам WinForms или WebForms;

Список наиболее часто используемых классов пространства имен System.Data.OleDb:

? OleDbConnection — обеспечивает подключение к базе данных через механизм OLE DB;

? oleDbCommand —

содержит запрос к базе данных на языке SQL либо представляет хранимую процедуру;

? oleDataAdapter — обеспечивает заполнение объекта DataSet нужными данными с помощью элементов OieDbCommand;

? oleDbDataReader — позволяет читать данные, полученные от oieDataAdapter, в виде строк и в прямом порядке;

? oleDbTransaction — представляет собой транзакцию в источнике данных.

Существует еще одно часто используемое пространство имен, которое может быть полезно при разработке баз данных на SQL Server — System.Data.SqlClient. Это пространство имен содержит весь функционал System.Data.OleDb, только в реализации для использования исключительно с SQL Server. Применение этого пространства имен позволяет получить доступ к особенностям SQL Server, таким как новые типы данных SQL Server 2008.

Рассмотрим пример доступа к данным посредством базовых механизмов ADO.NET DataSet:

SqlConnection conn = new

SqlConnection("Data Source=localhost,

Initial Catalog=BookMVC, Integrated Security=True");

conn.Open;

SqlCommand cmd = new SqlCommand("SELECT * FROM Customers", conn);

SqlDataReader reader = cmd.ExecuteReader;

string phone;

while (reader.Read)

{

string name = reader["name"].ToString;

if (name == "Сергей Петров")

{

phone = reader["phone"].ToString;

break;

}

}

reader.Close;

conn.Close;

Данный пример инициализирует строку соединения с базой данных и открывает соединение. Затем создает команду в виде SQL-запроса на чтение всех записей из таблицы Customers (заказчики). С помощью ExecuteReader команда выполняется, и для работы с данными строится объект SqlDataReader. После этого формируется цикл, который проходит по всем записям, ищет первую запись с именем Сергей Петров и прерывает цикл, сохраняя данные о телефоне в локальной переменной.

Для сравнения перепишем этот простой пример, используя LINQ для Dataset:

SqlConnection conn = new SqlConnection(@"

Data Source=localhost;

Initial Catalog=BookMVC;

Integrated Security=True");

conn.Open;

SqlCommand cmd = new SqlCommand("SELECT * FROM Customers", conn);

DataSet ds = new DataSet;

SqlDataAdapter adapter = new SqlDataAdapter(cmd);

adapter.Fill(ds);

DataTable customers = ds.Tables[0];

string phone = customers. AsEnumerable

.Where(x => x.Field<string>("name") == "Сергей Петров")

.Select(x => x.Field<string>("phone")).SingleOrDefault;

conn.Close;

Как

нетрудно заметить, наш цикл, нацеленный на поиск данных, исчез, и ему на замену пришло LINQ-выражение, которое выполняет точно ту же логику — ищет телефон по определенному номеру.

Механизм доступа к данным через ADO.NET Dataset в общем случае производительнее, чем через ORM, вроде LINQ для SQL или Entity Framework, поскольку при работе с объектами типа Dataset нет затрат на реализацию объектной модели базы данных. Работа с данными происходит напрямую через SQL-запросы или вызов хранимых процедур. Разработчик сам контролирует весь процесс получения и использования данных, что дает больше возможностей и прирост производительности, но с другой стороны, увеличивает объем написания необходимого кода.

Поскольку основная часть времени при запросе тратится на его выполнение, то использование ADO.NET вместо популярных ORM для доступа к данным оправдано только там, где ставятся повышенные требования к потреблению памяти и производительности. В большинстве же случаев затраты на ORM окупаются скоростью и простотой разработки, единой моделью доступа к данным и меньшему количеству кода.

LINQ для SQL

Работа с LINQ для SQL на платформе .NET Framework осуществляется с помощью классов пространства имен System.Linq и System.Data.Linq.

Перечислим основные классы этих пространств имен.

? System.Linq:

• Enumerable — предоставляет набор статичных методов для работы с объектами, реализующими интерфейс IEnumerable<T>.

• Queryable — предоставляет набор статичных методов для работы с объектами, реализующими интерфейс IQueryable<T>.

Методы этих классов, вроде Where, Select, Sum и др., используются в любом LINQ-выражении для построения запросов, обработки и фильтрации данных.

? System.Data.Linq:

• DataContext — основной объект для работы с LINQ для SQL, предоставляет контекст базы данных, через который осуществляется доступ ко всем сущностям базы данных;

• EntitySet<TEntity>, EntityRef<TEntity> (структура) — обеспечивают связь между сущностями в LINQ для SQL;

• Table<TEntity> — представляет таблицу с возможностью изменения объектов;

• CompiledQuery — предоставляет возможность компилировать и повторно использовать запросы.

Контекст базы данных, наследующий от класса DataContext, в LINQ для SQL принято создавать с помощью мастера, который автоматически сгенерирует LINQ для SQL-классов. После такой генерации работа с объектной моделью становится очень простой, например, приведенный в разделе ADO.NET пример в исполнении LINQ для SQL будет выглядеть так:

using (MyDatabaseDataContext dataContext = new MyDatabaseDataContext)

{

string phone = dataContext.Customers

.Where(x => x.name == "Сергей Петров")

Поделиться:
Популярные книги

Полное собрание рассказов

Воннегут Курт
Проза:
современная проза
5.00
рейтинг книги
Полное собрание рассказов

Давний спор славян. Россия. Польша. Литва

Широкорад Александр Борисович
Научно-образовательная:
история
8.12
рейтинг книги
Давний спор славян. Россия. Польша. Литва

Сборник статей и интервью 2009г (v1.22)

Кагарлицкий Борис Юльевич
Научно-образовательная:
политика
5.00
рейтинг книги
Сборник статей и интервью 2009г (v1.22)

Тор. Дитя Асгарда

Vegetarianka
Фантастика:
фэнтези
мистика
5.00
рейтинг книги
Тор. Дитя Асгарда

Собрание сочинений Джерома Клапки Джерома в одной книге

Джером Клапка Джером
7. Абсолют
Проза:
классическая проза
5.00
рейтинг книги
Собрание сочинений Джерома Клапки Джерома в одной книге

Второгодка. Книга 5. Презренный металл

Ромов Дмитрий
5. Второгодка
Фантастика:
городское фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Второгодка. Книга 5. Презренный металл

Темна вежа. Темна вежа VII

Кінг Стівен
7. Темна вежа
Фантастика:
фэнтези
научная фантастика
ужасы и мистика
6.25
рейтинг книги
Темна вежа. Темна вежа VII

Скажи изюм

Аксенов Василий Павлович
Проза:
современная проза
5.00
рейтинг книги
Скажи изюм

Товарищ "Чума"

lanpirot
1. Товарищ "Чума"
Фантастика:
попаданцы
альтернативная история
4.00
рейтинг книги
Товарищ Чума

Золото Вильгельма (сборник)

Искандер Фазиль Абдулович
Проза:
современная проза
5.00
рейтинг книги
Золото Вильгельма (сборник)

Хроники Тамула

Эддингс Дэвид
Тамули
Фантастика:
фэнтези
5.00
рейтинг книги
Хроники Тамула

Конфликт чести. Агент перемен. Лови день

Ли Шарон
Золотая библиотека фантастики
Фантастика:
боевая фантастика
6.25
рейтинг книги
Конфликт чести. Агент перемен. Лови день

Толковая Библия. Ветхий Завет. Книги пророческие

Лопухин Александр Павлович
Религия и эзотерика:
православие
христианство
религия
5.00
рейтинг книги
Толковая Библия. Ветхий Завет. Книги пророческие

"Фантастика 2024-48". Компиляция. Книги 1-29

Вишневский Сергей Викторович
Фантастика 2024. Компиляция
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
юмористическая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Фантастика 2024-48. Компиляция. Книги 1-29