2. Стартуем. Поговорим о:
• Доступе к данным на начальных этапах
• Что такое ORM
• Entity Framework что это такое и с чем его едят
• История Entity Framework
• Что нового в EF 7
• Demo. Использование EF в мобильных решениях
3. Что было до ORM
private static void ReadOrderData(string connectionString)
{
string queryString="SELECT OrderID, CustomerID FROM dbo.Orders;";
using (SqlConnection connection =new SqlConnection)
{
var command=new SqlCommand(queryString,connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
}
}
finally
{
reader.Close();
}
}
}
4. Новый подход - использование ORM
ORM(Object Relational Mapping) - отображение объектов
какого-либо объектно - ориентированного языка в структуры
реляционных баз данных. Эта технология позволяет
разработчику уменьшить зависимость от реляционных баз.
Популярные ORM для .NET это Entity Framework, Nhibernate,
LightSpeed (платный)
5. Entity Framework
Entity Framework – Разработанная Microsoft фреймверк для
работы с сущностями(entities). Сущностью является таблица
базы данных и ее связи. Т.е. грубо говоря Entity Framework
интерпритирует данные БД в коллекцию объектов.
Cуществует три подхода работы с Entity Framework:
• Code first
• Model first
• Database first
7. История EF
• EF 1. Это был первый релиз, который представил
разработчикам Database-First подход. Также был внедрен
EF Designer and Tools для Visual Studio 2008 (with SP1)
• EF 4. За первым последовал 4-й фреймверк. В нем
появился Code-first подход, POCO entity
generator(генератор сущнестей по модели), T4 templates,
Повышение производительности.
• EF5. Поддержка Enum, возвращающих табличное значение
функций, пространственные типы данных(например тип
geography), а так же ряд улучшений производительности.
• EF6. Асинхронные запросы и сохранение, Code First
Mapping для Insert/Update/Delete хранимых процедур.
8. Entity Framework 7. Чего стоит ждать
EF6 по прежнему продолжает дорабатываться. EF7- это
достаточно революционный проект.
А 7-ая ли это версия в принципе или это новый продукт
похожий на EF по основному API, но сильно разный внутри?
9. Векторы развития EF7
Команда выбрала путь более частых обновлений EF7,
чтобы не заставлять всех ждать полного комплекта
изменений.
Обозначены 2 вектора развития EF7:
• MobilePlatforms;
• NoSQL.
10. Оптимизация использования
RAM/CPU
Уменьшение потребления ресурсов — это обязательное
условие для нормальной работы на мобильных девайсах,
где объем RAM – 2 Гб на топовых моделях и 512 Мб на
стоковых. Рефакторинг и разбиение проекта на разные
сборки – это поддержка обоих векторов одновременно.
Именно к этому и пригли разработчики из команды EF
11. Сборки
Если EF 6 состоял из 2-х сборок:EntityFramework и
EntityFramework.SqlServer. Новый фреймверк будет состоять
из 10 сборок
12. Старая музыка по-новому
• Переработка логики DetectChanges
• Отказ от DBFirst и Model First. Только Code First
• Отказ от DatabaseInitializer
13. DetectChanges
Основной претензией было то, что за счет отслеживания
состояний объектов и вызова на каждый чих DetectChanges,
он жутко тормозил.
Это все решалось установкой настройки
AutoDetectChanges=false при массовых операциях вставки,
но об этом надо было знать.
В 7-ой версии настройку AutoDetectChanges удалили за
ненадобностью, т.к. DetectChanges перестал вызываться
постоянно, только на EF7 DbContext.SaveChanges, DbSet.Local,
DbContext.Entry, DbChangeTracker.Entries.
15. DatabaseInitializer, good bye
• База данных будет инициализироваться только с помощью
миграций.
• Миграция баз данных-это поддержка актуального
состояния базы данных. Это делается путем сравнения
текущего списка миграций в коде с таблицей миграциий в
БД(присутствует в каждой бд при первой миграции), при
их отличии будет ошибка
16. Поговорим о NoSQL
NoSQL (Not only SQL) — это ряд технологий, подходов,
проектов направленных на реализацию моделей баз
данных, имеющих существенные отличия от традиционных
СУБД, работающих с языком SQL.
Системой хранения NoSQL может быть как «ключ-значение»,
так и “BSON”
EF7 поддерживает нереляционные хранилища данных такие
как Redis(REmote DIctionary Server), Azure Table Storage.
Известно лишь, что для доступа будет использоваться
стороння библиотека StackExchange
17. EF для мобильных платформ
Ранее Entity Framework поддерживалась только в ASP.NET,
WPF, Windows Forms приложениях. Этого хватало долгое
время до появления мобильных платформ таких как
Windows Phone.
В Windows Phone и WinRT desktop поддерживается SQLite-
облегченное хранилище данных. Доступ к данным
происходит таким же образом, как и ранее в .NET
приложениях на низком уровне.
Microsoft решила выпустить Entity Framework для
мобильных платформ, т.к. мобильные приложения с
каждым днем становятся все более зависимыми от баз
данных.
18. Demo
Давайте посмотрим на демо, в котором я попытался
продемонстрировать всю прелесть Entity Framework 7 для
мобильных платформ.
Идея приложения:
19. Summary
• Ознакомились с такими понятиями как ORM, NoSQL
• Познакомились с представителем ORM- Entity Framework
• Кратко пробежались по истории EF
• Ознакомились с нововведениями 7 версии:
Отказ от DB First и Model First подхода
Переработка поведеия DetectChanges
Поддержка SQLite
Поддержка NoSQL
• Демо