ADO.NET Entity Framework

Поделись знанием:
Перейти к: навигация, поиск

ADO.NET Entity Framework (EF) — объектно-ориентированная технология доступа к данным, является object-relational mapping (ORM) решением для .NET Framework от Microsoft. Предоставляет возможность взаимодействия с объектами как посредством LINQ в виде LINQ to Entities, так и с использованием Entity SQL. Для облегчения построения web-решений используется как ADO.NET Data Services (Astoria), так и связка из Windows Communication Foundation и Windows Presentation Foundation, позволяющая строить многоуровневые приложения, реализуя один из шаблонов проектирования MVC, MVP или MVVM.





История

Релиз ADO.NET Entity Framework состоялся 11 августа 2008 года в составе .NET Framework 3.5 Service Pack 1 и Visual Studio 2008 Service Pack 1. В VS 2008 вошёл EDM Wizard для реверс-инжиниринга существующих баз данных и EDM Designer для редактирования сгенерированных моделей или создания их с нуля.

23 июня 2008 года, ещё до релиза первой версии, на стадии финальной доводки Entity Framework V1, начался процесс разработки Entity Framework V2.0.[1] По словам англ. Tim Mallalieu, менеджера программы LINQ to SQL и EF, в .NET Framework 4.0 именно Entity Framework станет рекомендуемой технологией доступа к реляционным СУБД посредством LINQ.[2]

12 апреля 2010 года в составе релиза Visual Studio 2010 и .NET Framework 4.0 был представлена Entity Framework 4.0. Позже уже отдельно от фреймворка были представлены версии: 4.1 (апрель 2011), 4.2 (октябрь 2011), 4.3 (февраль 2012).

11 августа 2012 года была представлена версия 5.0.0, которая была предназначена для .NET Framework 4.5. А 17 октября 2013 года была представлена версия 6.0, которая вышла под лицензией Apache License v2, тем самым став open-source проектом.

Версия 6.0 была выпущена 17 октября 2013 года[3] и сейчас это проект с открытым исходным кодом под лицензией Apache License v2. В версии 6.0 был сделан ряд улучшений в поддержке метода работы Code First.

Entity SQL

Entity SQL представляет собой язык, подобный языку SQL, который позволяет выполнять запросы к концептуальным моделям в Entity Framework[4].

LINQ to Entities

Это альтернативный интерфейс LINQ API, используемый для обращения к базе данных. Он отделяет сущностную объектную модель данных от физической базы данных, вводя логическое отображение между ними. Так, например, схемы реляционных баз данных не всегда подходят для построения объектно-ориентированных приложений и в результате мы имеем объектную модель приложения, существенно отличающуюся от логической модели данных, в этом случае используется LINQ to Entities, который использует модель EDM (Entity Data Model). То есть, если вам нужно ослабить связь между вашей сущностной объектной моделью данных и физической моделью данных, например, если ваши сущностные объекты конструируются из нескольких таблиц или вам нужна большая гибкость в моделировании ваших сущностных объектов используйте [msdn.microsoft.com/ru-ru/library/bb386964.aspx LINQ to Entities].

Подходы в EF

Изначально с самой первой версии Entity Framework поддерживал подход Database First, который позволял по готовой базе данных сгенерировать модель edmx. Затем эта модель использовалась для подключения к базе данных. Позже был добавлен подход Model First. Он позволял создать вручную с помощью визуального редактора модель edmx, и по ней создать базу данных. Начиная с 5.0 предпочтительным подходом становится Code First[5]. Его суть - сначала пишется код модели на C#, а затем по нему генерируется база данных. При этом модель edmx уже не используется.

Напишите отзыв о статье "ADO.NET Entity Framework"

Примечания

  1. [blogs.msdn.com/efdesign/archive/2008/06/23/transparency-in-the-design-process.aspx Transparency in the design process] (англ.). Microsoft ADO.NET team Entity Framework Design blog (23.08.2008). Проверено 24 ноября 2008. [www.webcitation.org/66KwxDuHF Архивировано из первоисточника 21 марта 2012].
  2. [blogs.msdn.com/adonet/archive/2008/10/29/update-on-linq-to-sql-and-linq-to-entities-roadmap.aspx Update on LINQ to SQL and LINQ to Entities Roadmap] (англ.). Microsoft ADO.NET team blog (29.10.2008). Проверено 24 ноября 2008. [www.webcitation.org/66Kwy9e4P Архивировано из первоисточника 21 марта 2012].
  3. [blogs.msdn.com/b/adonet/archive/2013/10/17/ef6-rtm-available.aspx EF6 RTM Available] (17 октября 2013).
  4. [msdn.microsoft.com/ru-ru/library/bb387145.aspx Общие сведения о языке Entity SQL]
  5. [metanit.com/sharp/entityframework/1.2.php Code First в Entity Framework].

Ссылки

  • [metanit.com/sharp/entityframework/ Руководство по Entity Framework]
  • [msdn.microsoft.com/ru-ru/data/ef.aspx Что такое Entity Framework]

Литература

  • Julia Lerman. Programming Entity Framework. — 2nd Edition. — O’Reilly, 2010. — 920 p. — ISBN 0-596-80726-0.
  • Эндрю Троелсен. Язык программирования C# 2010 и платформа .NET 4.0 = Pro C# 2010 and the .NET 4.0 Platform, 5ed. — М.: «Вильямс», 2010. — С. 1392. — ISBN 978-5-8459-1682-2.
  • Кристиан Нейгел, Билл Ивьен и др. C# 4.0 и платформа .NET 4 для профессионалов = Professional C# 4 and .NET 4. — М.: «Диалектика», 2010. — С. 1440. — ISBN 978-5-8459-1656-3.


Отрывок, характеризующий ADO.NET Entity Framework

Действительно, с батареи открывался вид почти всего расположения русских войск и большей части неприятеля. Прямо против батареи, на горизонте противоположного бугра, виднелась деревня Шенграбен; левее и правее можно было различить в трех местах, среди дыма их костров, массы французских войск, которых, очевидно, большая часть находилась в самой деревне и за горою. Левее деревни, в дыму, казалось что то похожее на батарею, но простым глазом нельзя было рассмотреть хорошенько. Правый фланг наш располагался на довольно крутом возвышении, которое господствовало над позицией французов. По нем расположена была наша пехота, и на самом краю видны были драгуны. В центре, где и находилась та батарея Тушина, с которой рассматривал позицию князь Андрей, был самый отлогий и прямой спуск и подъем к ручью, отделявшему нас от Шенграбена. Налево войска наши примыкали к лесу, где дымились костры нашей, рубившей дрова, пехоты. Линия французов была шире нашей, и ясно было, что французы легко могли обойти нас с обеих сторон. Сзади нашей позиции был крутой и глубокий овраг, по которому трудно было отступать артиллерии и коннице. Князь Андрей, облокотясь на пушку и достав бумажник, начертил для себя план расположения войск. В двух местах он карандашом поставил заметки, намереваясь сообщить их Багратиону. Он предполагал, во первых, сосредоточить всю артиллерию в центре и, во вторых, кавалерию перевести назад, на ту сторону оврага. Князь Андрей, постоянно находясь при главнокомандующем, следя за движениями масс и общими распоряжениями и постоянно занимаясь историческими описаниями сражений, и в этом предстоящем деле невольно соображал будущий ход военных действий только в общих чертах. Ему представлялись лишь следующего рода крупные случайности: «Ежели неприятель поведет атаку на правый фланг, – говорил он сам себе, – Киевский гренадерский и Подольский егерский должны будут удерживать свою позицию до тех пор, пока резервы центра не подойдут к ним. В этом случае драгуны могут ударить во фланг и опрокинуть их. В случае же атаки на центр, мы выставляем на этом возвышении центральную батарею и под ее прикрытием стягиваем левый фланг и отступаем до оврага эшелонами», рассуждал он сам с собою…
Всё время, что он был на батарее у орудия, он, как это часто бывает, не переставая, слышал звуки голосов офицеров, говоривших в балагане, но не понимал ни одного слова из того, что они говорили. Вдруг звук голосов из балагана поразил его таким задушевным тоном, что он невольно стал прислушиваться.
– Нет, голубчик, – говорил приятный и как будто знакомый князю Андрею голос, – я говорю, что коли бы возможно было знать, что будет после смерти, тогда бы и смерти из нас никто не боялся. Так то, голубчик.
Другой, более молодой голос перебил его:
– Да бойся, не бойся, всё равно, – не минуешь.
– А всё боишься! Эх вы, ученые люди, – сказал третий мужественный голос, перебивая обоих. – То то вы, артиллеристы, и учены очень оттого, что всё с собой свезти можно, и водочки и закусочки.
И владелец мужественного голоса, видимо, пехотный офицер, засмеялся.
– А всё боишься, – продолжал первый знакомый голос. – Боишься неизвестности, вот чего. Как там ни говори, что душа на небо пойдет… ведь это мы знаем, что неба нет, a сфера одна.
Опять мужественный голос перебил артиллериста.
– Ну, угостите же травником то вашим, Тушин, – сказал он.
«А, это тот самый капитан, который без сапог стоял у маркитанта», подумал князь Андрей, с удовольствием признавая приятный философствовавший голос.
– Травничку можно, – сказал Тушин, – а всё таки будущую жизнь постигнуть…
Он не договорил. В это время в воздухе послышался свист; ближе, ближе, быстрее и слышнее, слышнее и быстрее, и ядро, как будто не договорив всего, что нужно было, с нечеловеческою силой взрывая брызги, шлепнулось в землю недалеко от балагана. Земля как будто ахнула от страшного удара.
В то же мгновение из балагана выскочил прежде всех маленький Тушин с закушенною на бок трубочкой; доброе, умное лицо его было несколько бледно. За ним вышел владетель мужественного голоса, молодцоватый пехотный офицер, и побежал к своей роте, на бегу застегиваясь.


Князь Андрей верхом остановился на батарее, глядя на дым орудия, из которого вылетело ядро. Глаза его разбегались по обширному пространству. Он видел только, что прежде неподвижные массы французов заколыхались, и что налево действительно была батарея. На ней еще не разошелся дымок. Французские два конные, вероятно, адъютанта, проскакали по горе. Под гору, вероятно, для усиления цепи, двигалась явственно видневшаяся небольшая колонна неприятеля. Еще дым первого выстрела не рассеялся, как показался другой дымок и выстрел. Сраженье началось. Князь Андрей повернул лошадь и поскакал назад в Грунт отыскивать князя Багратиона. Сзади себя он слышал, как канонада становилась чаще и громче. Видно, наши начинали отвечать. Внизу, в том месте, где проезжали парламентеры, послышались ружейные выстрелы.