UR.ANUS
Asp.net mvc framework
вернуться

Магдануров Гайдар Ильдарович

Шрифт:

Для сравнения перепишем этот простой пример, используя 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 == "Сергей Петров")

.FirstOrDefault.phone;

}

Согласитесь, это заметно более простое решение по сравнению с вариантом, написанным с использованием ADO.NET Dataset.

Entity Framework

Entity Framework можно использовать только на .NET Framework версии 3.5 с установленным пакетом обновления SP1. Для работы с Entity Framework предлагаются следующие пространства имен: System.Data.Entities, System.Data.Objects, System.Data.EntityClient и др.

В отличие от LINQ для SQL модель данных Entity Framework (EDM) состоит из трех частей:

? концептуальная модель (CSDL) — позволяет создавать сущности, не равнозначные сущностям базы данных, например, комплексные сущности, состоящие из элементов нескольких таблиц, или сущности, наследующие от других сущностей;

? модель хранения данных (SSDL) — определяет логическую модель базы данных;

? модель сопоставления хранения данных и концептуальной модели (MSL) — определяет, как логическая модель хранения базы данных сопоставляется с концептуальной моделью.

  • Читать дальше
  • 1
  • ...
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • ...

UR.ANUS - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • support@anus.bid