uneta 17.04.15 dekhtiar - entity framework 7 and co

Post on 19-Jul-2015

174 Views

Category:

Education

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Entity Framework 7 and co.

Speaker: Dekhtiar Oleksandr

.NET developer, DCT

Стартуем. Поговорим о:

• Доступе к данным на начальных этапах

• Что такое ORM

• Entity Framework что это такое и с чем его едят

• История Entity Framework

• Что нового в EF 7

• Demo. Использование EF в мобильных решениях

Что было до 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();}

}}

Новый подход - использование ORM

ORM(Object Relational Mapping) - отображение объектов какого-либо объектно - ориентированного языка в структуры реляционных баз данных. Эта технология позволяет разработчику уменьшить зависимость от реляционных баз.

Популярные ORM для .NET это Entity Framework, Nhibernate,

LightSpeed (платный)

Entity Framework

Entity Framework – Разработанная Microsoft фреймверк для работы с сущностями(entities). Сущностью является таблица базы данных и ее связи. Т.е. грубо говоря Entity Framework интерпритирует данные БД в коллекцию объектов.

Cуществует три подхода работы с Entity Framework:

• Code first

• Model first

• Database first

Подходы для работы с EF

История 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 хранимых процедур.

Entity Framework 7. Чего стоит ждать

EF6 по прежнему продолжает дорабатываться. EF7- это достаточно революционный проект.

А 7-ая ли это версия в принципе или это новый продукт похожий на EF по основному API, но сильно разный внутри?

Векторы развития EF7

Команда выбрала путь более частых обновлений EF7, чтобы не заставлять всех ждать полного комплекта изменений.

Обозначены 2 вектора развития EF7:

• MobilePlatforms;

• NoSQL.

Оптимизация использования RAM/CPU

Уменьшение потребления ресурсов — это обязательное условие для нормальной работы на мобильных девайсах, где объем RAM – 2 Гб на топовых моделях и 512 Мб на стоковых. Рефакторинг и разбиение проекта на разные сборки – это поддержка обоих векторов одновременно.

Именно к этому и пригли разработчики из команды EF

Сборки

Если EF 6 состоял из 2-х сборок:EntityFramework и EntityFramework.SqlServer. Новый фреймверк будет состоять из 10 сборок

Старая музыка по-новому

• Переработка логики DetectChanges

• Отказ от DBFirst и Model First. Только Code First

• Отказ от DatabaseInitializer

DetectChanges

Основной претензией было то, что за счет отслеживания состояний объектов и вызова на каждый чих DetectChanges, он жутко тормозил.

Это все решалось установкой настройки AutoDetectChanges=false при массовых операциях вставки, но об этом надо было знать.

В 7-ой версии настройку AutoDetectChanges удалили за ненадобностью, т.к. DetectChanges перестал вызываться постоянно, только на EF7 DbContext.SaveChanges, DbSet.Local, DbContext.Entry, DbChangeTracker.Entries.

EDMX. Его Вы больше не увидите

DatabaseInitializer, good bye

• База данных будет инициализироваться только с помощью миграций.

• Миграция баз данных-это поддержка актуального состояния базы данных. Это делается путем сравнения текущего списка миграций в коде с таблицей миграциий в БД(присутствует в каждой бд при первой миграции), при их отличии будет ошибка

Поговорим о NoSQL

NoSQL (Not only SQL) — это ряд технологий, подходов, проектов направленных на реализацию моделей баз данных, имеющих существенные отличия от традиционных СУБД, работающих с языком SQL.

Системой хранения NoSQL может быть как «ключ-значение», так и “BSON”

EF7 поддерживает нереляционные хранилища данных такие как Redis(REmote DIctionary Server), Azure Table Storage.

Известно лишь, что для доступа будет использоваться стороння библиотека StackExchange

EF для мобильных платформ

Ранее Entity Framework поддерживалась только в ASP.NET, WPF, Windows Forms приложениях. Этого хватало долгое время до появления мобильных платформ таких как Windows Phone.

В Windows Phone и WinRT desktop поддерживается SQLite-облегченное хранилище данных. Доступ к данным происходит таким же образом, как и ранее в .NET приложениях на низком уровне.

Microsoft решила выпустить Entity Framework для мобильных платформ, т.к. мобильные приложения с каждым днем становятся все более зависимыми от баз данных.

Demo

Давайте посмотрим на демо, в котором я попытался продемонстрировать всю прелесть Entity Framework 7 для мобильных платформ.

Идея приложения:

Summary

• Ознакомились с такими понятиями как ORM, NoSQL

• Познакомились с представителем ORM- Entity Framework

• Кратко пробежались по истории EF

• Ознакомились с нововведениями 7 версии:

Отказ от DB First и Model First подхода

Переработка поведеия DetectChanges

Поддержка SQLite

Поддержка NoSQL

• Демо

Спасибо за внимание!

top related