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

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

Жанры

Шрифт:

.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) — определяет, как логическая модель хранения базы данных сопоставляется с концептуальной моделью.

При работе с Entity Framework в Visual Studio 2008 SP1 предлагается мастер автоматического создания модели на базе заданных объектов базы данных. Вы можете использовать его для генерации всех трех частей EDM. Результатом работы мастера станет файл *.edmx, который будет содержать все три модели сразу. Контекст базы данных и отображение на классы C# будут сгенерированы в другой файл *.Designer.cs.

После создания мастером модели EDM вы сможете манипулировать концептуальной моделью, моделью хранения и моделью сопоставления с помощью специального визуального дизайнера Entity Framework. Этот дизайнер, кроме всего прочего, позволяет выполнять и такие операции, как валидацию модели EDM, обновление модели из базы данных.

Другим отличием Entity Framework от LINQ для SQL является разнообразие доступа к модели данных. Существует три варианта работы с EDM:

? LINQ для сущностей — аналог LINQ для SQL с полной поддержкой всех особенностей Entity Framework;

? Entity SQL — особенный язык, диалект SQL, который служит для работы с моделью EDM. Имеет ряд отличий и ограничений по сравнению с обычным SQL;

? третий вариант совмещает в себе первые два, с помощью LINQ-выражений можно строить запросы на языке Entity SQL.

Подробное описание особенностей Entity Framework или Entity SQL выходит за рамки этой книги. Здесь мы приведем только очевидные отличия LINQ для сущностей от LINQ для SQL:

? поддержка прозрачного мэппинга отношений "многие-ко-многим" в LINQ для сущностей. LINQ для SQL строго отображает структуру базы данных, поэтому промежуточная таблица также будет отображена, и ее потребуется использовать при работе с такими данными;

? отсутствие в LINQ для сущностей поддержки методов Single и singleOrDefault, вместо которых рекомендуется использовать First и FirstOrDefault;

? вместо методов DeleteOnSubmit

и SubmitChanges в LINQ для сущностей предложены методы DeleteObject и saveChanges соответственно;

? вместо метода XXX.InsertOnSubmit предложены обертки (автогенерируемые) AddToXXX, где XXX — это имя отображаемой сущности (таблицы).

Еще одно незначительное отличие в процессе автогенерации моделей с помощью мастеров в Visual Studio представляет собой изменение имени таблицы при отображении на класс в LINQ для SQL. Например, таблица Customers отобразится на класс Customer, без последней буквы "s". При создании классов в Entity Framework мастер не производит такие изменения.

NHibernate

Еще одним вариантом организации доступа к данным может стать популярная ORM-библиотека NHibernate — довольно старый механизм, портированный на платформу .NET Framework из Java-проекта Hibernate. Как ORM, Hibernate давно заслужила право называться зрелой, гибкой, мощной и главное производительной библиотекой. Адаптация под .NET, хотя и не совсем полностью реализует функционал Hibernate версии 3, но предлагает все тот же механизм, сравнимый по мощности и производительности с предком.

NHibernate, как и другие ORM, использует для реализации доступа к данным мэппинг в виде XML-файла. Этот файл должен быть оформлен согласно схеме nhibernate-mapping.xsd, которая идет в комплекте поставки. По традиции названия всех таких файлов мэппинга формируются как class_name.hbm.xml. Такой файл может выглядеть примерно так:

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn: nhibernate-mapping-2.2"

namespace="MyNamespace" assembly="MyNamespace">

<class name="Customer" table="Customers">

<id name="customerId">

<column name="customerId" not-null="true" />

<generator class="guid"/>

</id>

<property name="name" />

<property name="phone" />

<property name="address" />

</class>

</hibernate-mapping>

Здесь создается мэппинг класса Customer на таблицу Customers в базе данных, которая содержит ряд полей: customerId, name, phone, address. Для подключения к базе данных должен быть создан другой конфигурационный файл, похожий на этот:

<?xml version="1.0" encoding="utf-8"?>

<hibernate-configuration>

<session-factory xmlns="urn: nhibernate-configuration-2.2">

<property name=''connection.provider">

NHibernate.Connection.DriverConnectionProvider

</property>

<property name=''connection.driver_class">

NHibernate.Driver.SqlClientDriver

</property>

<property name="dialect">

NHibernate.Dialect.MsSql2005Dialect

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

Год 1942 — «учебный»

Бешанов Владимир Васильевич
Документальная литература:
биографии и мемуары
6.20
рейтинг книги
Год 1942 — «учебный»

Записки брюнетки

Голубицкая Жанна
Проза:
современная проза
4.25
рейтинг книги
Записки брюнетки

Берсеркер

Саберхаген Фред
1. Берсеркер
Фантастика:
научная фантастика
7.56
рейтинг книги
Берсеркер

Кетополис: Киты и броненосцы

Грин Грэй Ф.
1. Кетополис
Фантастика:
социально-философская фантастика
научная фантастика
стимпанк
7.78
рейтинг книги
Кетополис: Киты и броненосцы

ФЭНТЕЗИ-2004

Пехов Алексей Юрьевич
Фантастика:
фэнтези
5.75
рейтинг книги
ФЭНТЕЗИ-2004

Цивилизация статуса (сборник)

Шекли Роберт
Сборники Роберта Шекли
Фантастика:
фэнтези
8.22
рейтинг книги
Цивилизация статуса (сборник)

Инженер магии

Модезитт Лиланд Экстон
2. Отшельничий остров
Фантастика:
фэнтези
6.25
рейтинг книги
Инженер магии

Газлайтер. Том 3

Володин Григорий Григорьевич
3. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 3

Игра с огнем

Джейн Анна
2. Мой идеальный смерч
Любовные романы:
современные любовные романы
9.51
рейтинг книги
Игра с огнем

Нужные вещи

Кинг Стивен
16. Темная Башня
Фантастика:
ужасы и мистика
9.10
рейтинг книги
Нужные вещи

Поход

Валериев Игорь
4. Ермак
Фантастика:
боевая фантастика
альтернативная история
6.25
рейтинг книги
Поход

Вечный. Книга V

Рокотов Алексей
5. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга V

Американский таблоид

Эллрой Джеймс
Детективы:
крутой детектив
7.17
рейтинг книги
Американский таблоид

Буря

Эренбург Илья Григорьевич
Проза:
военная проза
советская классическая проза
6.25
рейтинг книги
Буря