Гайдар Магдануров - ASP.NET MVC Framework
- Название:ASP.NET MVC Framework
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2010
- Город:Санкт-Петербург
- ISBN:978-5-9775-0462-1
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Гайдар Магдануров - ASP.NET MVC Framework краткое содержание
Описаны модель и доступ к данным (технологии LINQ, Entity Framework и др.), контроллеры, представление и интерфейс приложения, механизмы маршрутизации и Ajax-функциональность. Уделено внимание вопросам тестирования веб-приложений. Рассмотрены особенности применения ASP.NET MVC 2 в Visual Studio 2010.
Для программистов
ASP.NET MVC Framework - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
unitOfWork.Commit();
}
Обратите внимание, в приведенном коде нет ни одной зависимости, которая привязывала бы нас либо к конкретной базе данных, либо к конкретному механизму ORM. Для замены одного из этих элементов нам потребуется всего лишь реализовать служебные механизмы вроде класса unitofWork
, хранилищ и сервисов, согласно требованиям, но не приведенный код. Любой код, написанный с использованием описанных ранее механизмов, не потребует модернизации.
Еще одним хорошим ходом могло бы стать вынесение класса UnitofWork
и контекста ORM в отдельные слабосвязанные сущности, для того чтобы хранилища и сервисы не были завязаны на определенные контексты ORM. Но в связи с тем, что хранилища и сервисы, по своей сути, жестко связаны с конкретным ORM, реализация такого вынесения требуется редко.
Механизмы для работы с данными
В реальных приложениях источник данных может быть самым разнообразным, чтобы продемонстрировать это, в текущем разделе мы приведем несколько механизмов для работы с данными и попробуем сравнить их производительность и простоту работы.
XML-данные
.NET Framework предлагает широкий ассортимент объектов для доступа к XML-данным, которые расположены в стандартных сборках: System.Xml, System.Xml.XPath, System.Xml.Xsl, System.Xml.Schema и System.Xml.Linq . Рассмотрим назначение и наиболее полезные классы каждой из сборок:
□ System.Xml — содержит базовые классы для работы с XML, такие как
XmlDocument, XmlElement, XmlNode и множество других, которые позволяют реализовать загрузку из файлов, обработку, добавление, изменение, удаление XML-данных;
□ System.Xml.XPath — содержит классы для реализации работы механизма XPath, позволяющего писать выражения к XML-документу для поиска необходимых данных;
□ System.Xml.Xsl — содержит классы для поддержки реализации XSLT-преобразований XML-документа;
□ System.Xml.Schema — содержит классы для поддержки XSD-схем и валидации XML-данных на их основе. Содержит большое число классов, позволяющих создавать XSD-схемы и использовать их;
□ System.Xml.Lin — последняя сборка, которая недавно появилась в .NET Framework. Содержит классы, реализующие механизм доступа к XML-данным на основе LINQ-выражений. Этот механизм носит собственное название LINQ для XML. Он позволяет использовать уже известные вам LINQ-выражения для обработки XML-данных.
Рассмотрим пример обработки XML-данных с помощью LINQ для XML. Предположим, что у нас есть следующий XML-файл:
Владимир Иванов
yn. CTpoMTanefr
12
23
MocKBa
100888
Россия
Сергей Петров
ул. Бажова
76
123
Eкатеринбург
620000
Россия
Для получения имени по номеру ордера, используя LINQ для XML, мы можем написать следующий код:
XDocument xdoc =
XDocument.Load("D:\\CPS\\#Projects\\MVCBook\\MVCBook\\Order.xml");
IEnumerable orders =
xdoc.Element("Orders").Descendants("Order");
int orderId = 100;
IEnumerable order =
orders.Where(x => x.Attribute("OrderId").Value == orderId.ToString());
XElement address = order.Select(x => x.Element("Address"))
.FirstOrDefault();
string name = address.Element("Name").Value;
В данном примере загружается файл orders.xml, в переменной orders присваиваются все заявки (элементы Order в XML-файле). Затем с помощью LINQ-запроса находится заявка с идентификатором 100. После этого выбирает элемент адреса заявки и, в завершение, из адреса извлекается имя.
Стоит отметить, что в данном примере не производились проверки возвращаемых значений на null, что на практике делать обязательно.
Работа с данными через ADO.NET
Понятие ADO.NET на платформе .NET достаточно широкое. На самом деле LINQ для SQL и LINQ для XML, а также все остальные стандартные LINQ-реализации входят в механизм ADO.NET как составные части. Но исторически ADO.NET развивалось от версии к версии платформы через другие механизмы, такие как объекты Dataset
.
Dataset
— это объект, содержащий кэш данных, загруженных из источника данных. По сути Dataset
— это набор объектов типа DataTable
, представляющих собой таблицы данных, и DataRelation
, которые описывают связи между объектами DataTable
.
Практически весь функционал по работе с данными через Dataset
расположен в .NET Framework в пространствах имен System.Data и System.Data.OleDb (кроме этого, существует еще более двух десятков пространств имен, название которых начинается с System.Data ). Перечислим основные самые важные классы, которые используются чаще всего при работе с Dataset
из System.Data:
□ DataSet, DataTable, DataColumn, DataRow
— различные варианты представления данных (набор, таблица, схема колонки, строка данных);
□ 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
. После этого формируется цикл, который проходит по всем записям, ищет первую запись с именем Сергей Петров и прерывает цикл, сохраняя данные о телефоне в локальной переменной.
Интервал:
Закладка: