Entity Framework - Entity Framework
Оригинальный автор (ы) | Microsoft |
---|---|
Разработчики) | .NET Foundation |
изначальный выпуск | 11 августа 2008 г. |
Стабильный выпуск | |
Репозиторий | github github |
Написано в | C # |
Платформа | .NET Framework, .NET Core |
Тип | Объектно-реляционное отображение |
Лицензия | Лицензия Apache 2.0 |
Интернет сайт | msdn |
Entity Framework (EF) является открытым исходным кодом[3] объектно-реляционное отображение (ORM) фреймворк для ADO.NET. Первоначально он поставлялся как неотъемлемая часть .NET Framework. Начиная с Entity Framework версии 6, он поставляется отдельно от .NET Framework.[нужна цитата ]
Обзор
Эта секция нужны дополнительные цитаты для проверка.Апрель 2018 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Entity Framework - это набор технологий в ADO.NET которые поддерживают разработку программных приложений, ориентированных на данные. Архитекторы и разработчики приложений, ориентированных на данные, обычно боролись с необходимостью достичь двух очень разных целей. Они должны моделировать сущности, отношения и логику бизнес-задач, которые они решают, а также должны работать с механизмами данных, используемыми для хранения и извлечения данных. Данные могут охватывать несколько систем хранения, каждая со своими собственными протоколами; даже приложения, которые работают с одной системой хранения, должны сбалансировать требования системы хранения с требованиями написания эффективного и поддерживаемого кода приложения. Эта проблема обычно называется "объектно-относительное несоответствие импеданса ".[нужна цитата ]
Много объектно-реляционное отображение (ORM) инструменты (также известные как «объектно-реляционные менеджеры») были разработаны, чтобы позволить разработчикам работать с данными в форме объектов и свойств, зависящих от предметной области, таких как клиенты и адреса клиентов, не заботясь о базовой базе данных. таблицы и столбцы, в которых хранятся эти данные. С помощью ORM разработчики могут работать на более высоком уровне абстракции при работе с данными, а также могут создавать и поддерживать приложения, ориентированные на данные, с меньшим количеством кода, чем в традиционных приложениях. Entity Framework - это решение ORM, которое в настоящее время продвигается для использования в стеке разработки Microsoft.[4]
История
Первая версия Entity Framework (EFv1) была включена в .NET Framework 3.5 Service Pack 1 и Visual Studio 2008 Пакет обновления 1, выпущенный 11 августа 2008 г. . Эта версия вызвала широкую критику и даже привлекла вотум недоверия, подписанный как минимум тысячей разработчиков.[5]
Вторая версия Entity Framework, названная Entity Framework 4.0 (EFv4), была выпущена как часть .NET 4.0 12 апреля 2010 года и решила многие критические замечания в адрес версии 1.[6]
Третья версия Entity Framework, версия 4.1, была выпущена 12 апреля 2011 года с поддержкой Code First.
Обновление версии 4.1 под названием Entity Framework 4.1 Update 1 было выпущено 25 июля 2011 г. Оно включает исправления ошибок и новые поддерживаемые типы.
Версия 4.3.1 была выпущена 29 февраля 2012 года.[7] Было несколько обновлений, например, поддержка миграции.
Версия 5.0.0 была выпущена 11 августа 2012 г.[8] и ориентирована на .NET framework 4.5. Кроме того, эта версия доступна для .Net framework 4, но без каких-либо преимуществ во время выполнения по сравнению с версией 4.
Версия 6.0 была выпущена 17 октября 2013 г.[9] и теперь это проект с открытым исходным кодом под лицензией Лицензия Apache v2. подобно ASP.NET MVC, его исходный код размещен по адресу GitHub используя Git.[10] В этой версии есть ряд улучшений для сначала код поддержка.[11]
Затем Microsoft решила модернизировать, разбить на компоненты и перенести кросс-платформу .NET в Linux, OSX и другие системы, что означает, что следующая версия Entity Framework будет полностью переработана.[12] 27 июня 2016 года он был выпущен как Entity Framework Core 1.0 вместе с ASP.NET Core 1.0 и .NET Core 1.0.[13] Первоначально он назывался Entity Framework 7, но был переименован, чтобы подчеркнуть, что это было полное переписывание, а не инкрементное обновление, и оно не заменяет EF6.[14]
Entity Framework Core 1.0 под лицензией Лицензия Apache v2 и полностью открыта на GitHub. Хотя Entity Framework Core 1.0 имеет некоторые концептуальные сходства с предыдущими версиями Entity Framework, это полностью новая кодовая база, разработанная, чтобы быть более эффективной, мощной, гибкой и расширяемой, будет работать в Windows, Linux и OSX и будет поддерживать новый диапазон. реляционных хранилищ данных и хранилищ данных NOSQL.[12]
Entity Framework Core 2.0 был выпущен 14 августа 2017 года вместе с Visual Studio 2017 15.3 и ASP.NET Core 2.0. [15]
Entity Framework Core 3.0 был выпущен 23 сентября 2019 года вместе с Visual Studio 2019 16.3 и ASP.NET Core 3.0, [16]
Entity Framework Core 3.1 (EF Core 3.1) был официально выпущен для использования в производственной среде 3 декабря 2019 г.[17][18]
и будет предпочтительной версией с долгосрочной поддержкой как минимум до 3 декабря 2022 года.Архитектура
Архитектура ADO.NET Entity Framework снизу вверх состоит из следующего:[нужна цитата ]
- Поставщики конкретных источников данных, которые абстрагируют интерфейсы ADO.NET для подключения к базе данных при программировании по концептуальной схеме.
- Поставщик карт, специфичный для базы данных поставщик, который переводит дерево команд Entity SQL в запрос в собственном варианте SQL базы данных. Он включает Мост для магазина, который является компонентом, отвечающим за преобразование общего дерева команд в дерево команд для конкретного хранилища.
- Анализатор EDM и отображение представления, который принимает спецификацию SDL модели данных и то, как она отображается на базовую реляционную модель, и позволяет программировать на основе концептуальной модели. На основе реляционной схемы он создает представления данных, соответствующие концептуальной модели. Он агрегирует информацию из нескольких таблиц, чтобы объединить их в объект, и разбивает обновление объекта на несколько обновлений для любой таблицы (таблиц), внесенной в этот объект.
- Конвейер запросов и обновлений, обрабатывает запросы, фильтрует и обновляет запросы, чтобы преобразовать их в канонические деревья команд, которые затем преобразуются поставщиком карты в запросы для конкретного магазина.
- Услуги метаданных, которые обрабатывают все метаданные, связанные с сущностями, отношениями и сопоставлениями.
- Сделкидля интеграции с транзакционными возможностями базового магазина. Если базовое хранилище не поддерживает транзакции, его поддержка должна быть реализована на этом уровне.
- API концептуального уровня, среда выполнения, которая предоставляет модель программирования для кодирования в соответствии с концептуальной схемой. Он следует шаблону ADO.NET, в котором используются объекты Connection для обращения к поставщику карты, используются объекты Command для отправки запроса и возвращаются EntityResultSets или EntitySets, содержащие результат.
- Отключенные компоненты, которые локально кэшируют наборы данных и наборы сущностей для использования ADO.NET Entity Framework в периодически подключаемой среде.
- Встроенная база данных: ADO.NET Entity Framework включает легкую встроенную базу данных для кэширования на стороне клиента и запроса реляционных данных.
- Инструменты дизайнатакие как Mapping Designer, также включены в ADO.NET Entity Framework, что упрощает задачу сопоставления концептуальной схемы с реляционной схемой и указания, какие свойства типа сущности соответствуют какой таблице в базе данных.
- Уровень программирования, который представляет EDM как программные конструкции, которые могут использоваться языками программирования.
- Услуги объекта, автоматически генерирует код для классов CLR, которые предоставляют те же свойства, что и сущность, что позволяет создавать экземпляры сущностей как объекты .NET.
- Веб-сервисы, которые предоставляют сущности как веб-службы.
- Услуги высокого уровня, например, службы отчетов, которые работают с сущностями, а не с реляционными данными.
Модель данных сущности
В Модель данных сущности (EDM) определяет концептуальную модель (CSDL) данных, используя метод моделирования, который сам называется моделью данных сущности, расширенной версией модель сущность – связь.[19]Модель данных в первую очередь описывает Сущности и Ассоциации они участвуют в. Схема EDM выражается в Язык определения схемы (SDL), который представляет собой приложение XML (расширенный язык разметки). Кроме того, также необходимо указать отображение (MSL) элементов концептуальной схемы (CSDL) в схему хранения (SSDL). Спецификация отображения также выражается в XML.[20]
Visual Studio также предоставляет Entity Designer для визуального создания EDM и спецификации отображения. Результатом работы инструмента является XML-файл (* .edmx), определяющий схему и сопоставление. Файл Edmx содержит артефакты метаданных EF (содержимое CSDL / MSL / SSDL). Эти три файла (csdl, msl, ssdl) также можно создавать или редактировать вручную.[нужна цитата ]
Картография
Мастер модели данных сущности[21] в Visual Studio в большинстве случаев изначально создается взаимно-однозначное (1: 1) сопоставление между схемой базы данных и концептуальной схемой. В реляционной схеме элементы состоят из таблиц, при этом первичный и внешний ключи склеивают связанные таблицы вместе. Напротив, Типы сущностей определить концептуальную схему данных.[нужна цитата ]
Типы сущностей представляют собой совокупность полей с несколькими типами - каждое поле сопоставляется с определенным столбцом в базе данных - и могут содержать информацию из нескольких физических таблиц. Типы сущностей могут быть связаны друг с другом независимо от отношений в физической схеме. Связанные сущности также доступны аналогичным образом - через поле, имя которого обозначает отношение, в котором они участвуют и к которому они обращаются, которое вместо извлечения значения из какого-либо столбца в базе данных просматривает взаимосвязь и возвращает сущность (или набор сущностей) с который связан.[нужна цитата ]
Типы сущностей образуют класс объектов, которым соответствуют сущности, причем сущности являются экземплярами типов сущностей. Сущности представляют собой отдельные объекты, которые составляют часть проблемы, решаемой приложением, и индексируются с помощью ключа. Например, преобразовав физическую схему, описанную выше, у нас будет два типа сущностей:
- CustomerEntity, который содержит имя клиента из Клиенты таблица, а адрес покупателя из Контакты Таблица.
- OrderEntity, который инкапсулирует заказы определенного клиента, извлекая их из Заказы Таблица.
Логическая схема и ее сопоставление с физической схемой представлены как Модель данных сущности (EDM), заданный как файл XML. ADO.NET Entity Framework использует EDM для фактического сопоставления, позволяя приложению работать с сущностями, при этом внутренне абстрагируясь от использования таких конструкций ADO.NET, как DataSet и RecordSet. ADO.NET Entity Framework выполняет присоединяется необходима для получения справочной информации об объектах из нескольких таблиц или при отслеживании связи. Когда сущность обновляется, она отслеживает, из какой таблицы была получена информация, и выдает операторы обновления SQL для обновления таблиц, в которых были обновлены некоторые данные. ADO.NET Entity Framework использует eSQL, производную от SQL, для выполнения запросов, теоретико-множественных операций и обновлений сущностей и их отношений. Запросы в eSQL, если это необходимо, затем переводятся в собственный вариант SQL базовой базы данных.[нужна цитата ]
Типы сущностей и наборы сущностей просто образуют логическую схему EDM и могут быть представлены как угодно. ADO.NET Entity Framework включает Сервис объектов который представляет эти объекты как Объекты с элементами и отношениями, представленными как свойства. Таким образом, объекты Entity являются лишь интерфейсом для экземпляров типов сущностей EDM, что позволяет объектно-ориентированным языкам получать доступ к ним и использовать их. Точно так же могут быть созданы другие интерфейсы, которые предоставляют сущности через веб-службы (например, Службы данных WCF ) или XML, который используется при сериализации сущностей для постоянного хранения или передачи по сети.[22]
Сущности
Сущности ** являются экземплярами Тип объектаs; они представляют собой отдельные экземпляры объектов (например, покупатель, заказы), к которому относится информация. Идентичность сущности определяется типом сущности, экземпляром которого она является; в этом смысле тип сущности определяет класс, к которому принадлежит сущность, а также определяет, к какому свойства у сущности будет. Свойства описывают некоторые аспекты сущности, давая ей имя и тип. Свойства типа сущности в ADO.NET Entity Framework полностью типизированы и полностью совместимы с системой типов, используемой в системе СУБД, а также с системой общих типов .NET Framework. Недвижимость может быть SimpleType, или ComplexType, а также может быть многозначным. Все Тип объектапринадлежат некоторому пространству имен и имеют EntityKey свойство, которое однозначно идентифицирует каждый экземпляр типа сущности. Различные типы собственности различаются следующим образом:[нужна цитата ]
- SimpleType, соответствует примитивным типам данных, таким как Целое число, Символы и Плавающая точка числа.[23]
- ComplexType, представляет собой совокупность нескольких свойств типа SimpleType, или ComplexType. в отличие Тип объектаs, однако, ComplexTypes не может иметь EntityKey. В Entity Framework v1 ComplexTypes не может передаваться по наследству.[24]
Все экземпляры сущностей размещаются в EntityContainers, которые являются контейнерами для каждого проекта для сущностей. Каждый проект имеет один или несколько именованных EntityContainers, которые могут ссылаться на сущности в нескольких пространствах имен и типах сущностей. Несколько экземпляров одного типа сущности могут храниться в коллекциях, называемых EntitySets. Один тип сущности может иметь несколько наборов сущностей.[нужна цитата ]
Примитивные типы EDM (простые типы):[23][25]
Тип EDM | Сопоставление типов CLR |
---|---|
Edm.Binary | Байт[] |
Эдм Булан | Булево |
Эдм.Байт | Байт |
Edm.DateTime | DateTime |
Edm.DateTimeOffset | DateTimeOffset |
Edm.Decimal | Десятичная дробь |
Эдм. Двойной | Двойной |
Edm.Guid | Гид |
Edm.Int16 | Int16 |
Edm.Int32 | Int32 |
Edm.Int64 | Int64 |
Edm.SByte | SByte |
Эдм. Сингл | не замужем |
Edm.String | Строка |
Эдм. Время | Промежуток времени |
Отношения
Любые два типа сущностей могут быть связаны либо Ассоциация отношения или Сдерживание связь. Например, отгрузка выставлен счет для покупателя - это ассоциация, а заказ содержит детали заказа - это отношение содержания. Отношение включения также можно использовать для моделирования наследования между сущностями. Связь между двумя типами сущностей определяется Тип отношений, экземпляры которых, называемые Отношения, свяжите экземпляры сущностей. В будущих выпусках другие типы отношений, такие как Сочинение, или Идентификация, может быть введен.[нужна цитата ]
Типы отношений характеризуются своей степенью (арностью) или количеством типов сущностей, которые они связывают, и их множественностью. Однако в первоначальном выпуске ADO.NET Entity Framework отношения ограничиваются двоичными (второй степени) двунаправленными отношениями. Кратность определяет, сколько экземпляров сущностей можно связать вместе. В зависимости от множественности отношения могут быть один-к-одному, один-ко-многим или многие-ко-многим. Именованы отношения между сущностями; имя называется ролью. Он определяет цель отношений.[нужна цитата ]
Тип отношений также может иметь Операция или Действие связанный с ним, что позволяет выполнять некоторые действия над объектом в случае выполнения действия над связанным объектом. Можно указать отношения, чтобы Действие когда некоторые Операция выполняется на связанной сущности. Например, при удалении объекта, составляющего часть отношения ( OnDelete операция) действия, которые могут быть выполнены:[26]
- Каскад, который предписывает удалить экземпляр отношения и все связанные экземпляры сущности.
- Никто.
Для ассоциативных отношений, которые могут иметь разную семантику на обоих концах, для обоих концов могут быть указаны разные действия.[нужна цитата ]
Язык определения схемы
ADO.NET Entity Framework использует язык определения данных на основе XML, называемый Язык определения схемы (SDL) для определения схемы EDM. SDL определяет SimpleTypes аналогично CTS примитивные типы, в том числе Строка, Int32, Двойной, Десятичная дробь, Гид, и DateTime, среди прочего. An Перечисление, который определяет карту примитивных значений и имен, также считается простым типом. Перечисления поддерживаются только начиная с версии 5.0 и выше. ComplexTypes создаются на основе объединения других типов. Набор свойств этих типов определяет тип сущности. Это определение можно записать в грамматике EBNF как:[нужна цитата ]
Тип объекта ::= ENTITYTYPE entityTypeName [BASE entityTypeName] [РЕФЕРАТ правда|ложный] KEY propertyName [, Имя свойства]* {(propertyName PropertyType [PropertyFacet]*) +} PropertyType ::= ((PrimitiveType [PrimitiveTypeFacets]*) | (complexTypeName) | RowType PropertyFacet ::= ( [NULLABLE истина | ложный] | [ПО УМОЛЧАНИЮ defaultVal] | [МНОЖЕСТВЕННОСТЬ [ 1|*] ] ) PropertyTypeFacet ::= МАКСИМАЛЬНАЯ ДЛИНА | ТОЧНОСТЬ | МАСШТАБ | UNICODE | ФИКСИРОВАННАЯ ДЛИНА | КОЛЛЕКЦИЯ | DATETIMEKIND | СОХРАНИТЬ PrimitiveType ::= БИНАРНЫЙ | STRING | BOOLEAN | НЕ ЗАМУЖЕМ | ДВОЙНОЙ | ДЕСЯТИЧНАЯ ДРОБЬ | GUID | БАЙТ | SBYTE | INT16 | INT32 | INT64 | ДАТА ВРЕМЯ | DATETIMEOFFSET | ВРЕМЯ )
Грани используются для описания метаданных свойства, например, является ли оно допускающим значение NULL или имеет значение по умолчанию, а также мощность свойства, то есть, является ли свойство однозначным или многозначным. Кратность «1» означает однозначное свойство; «*» означает, что это многозначная собственность. В качестве примера, объект может быть обозначен в SDL как:[27]
Имя ="Адрес"> <Свойство Имя ="Улица" Тип ="Строка" Обнуляемый ="ложный" /> <Свойство Имя ="Город" Тип ="Строка" Обнуляемый ="ложный" /> <Свойство Имя ="Страна" Тип ="Строка" Обнуляемый ="ложный" /> <Свойство Имя ="Почтовый индекс" Тип ="Int32" /></ComplexType> Имя ="Покупатель"> <Key> Имя ="Эл. адрес" /> </Key> <Свойство Имя ="Имя" Тип ="Строка" /> <Свойство Имя ="Эл. адрес" Тип ="Строка" Обнуляемый ="ложный" /> <Свойство Имя ="Адрес" Тип ="Адрес" /></EntityType>
Тип отношения определяется как указание конечных точек и их кратностей. Например, отношение "один ко многим" между Покупатель и Заказы можно определить как
<Ассоциация Имя ="CustomerAndOrders"> <Конец Тип ="Покупатель" Кратность ="1" /> <Конец Тип ="Заказы" Кратность ="*"> Действие ="Каскад" /> </End></Association>
Запрос данных
Сущность SQL
ADO.NET Entity Framework использует вариант Структурированный язык запросов, названный Сущность SQL, который предназначен для написания декларативных запросов и обновлений сущностей и отношений сущностей - на концептуальном уровне. Он отличается от SQL тем, что не имеет явных конструкций для присоединяется потому что EDM предназначен для абстрактного разделения данных по таблицам.[нужна цитата ]
Запросы к концептуальной модели облегчают EntityClient классы, которые принимают запрос Entity SQL. Конвейер запросов анализирует запрос Entity SQL в дереве команд, разделяя запрос по нескольким таблицам, которые передаются поставщику EntityClient. Подобно поставщикам данных ADO.NET, поставщик EntityClient также инициализируется с помощью Подключение объект, который в дополнение к обычным параметрам хранилища данных и информации аутентификации требует схемы SDL и информации сопоставления. Поставщик EntityClient, в свою очередь, затем превращает дерево команд Entity SQL в запрос SQL в собственном варианте базы данных. Затем выполнение запроса возвращает Entity SQL ResultSet, который не ограничен табличной структурой, в отличие от ADO.NET ResultSet.[нужна цитата ]
Entity SQL улучшает SQL, добавляя встроенную поддержку для:[нужна цитата ]
- Типы, поскольку сущности ADO.NET полностью типизированы.
- EntitySets, которые рассматриваются как коллекции сущностей.
- Сочетаемость, который снимает ограничения на использование подзапросов.
Канонические функции Entity SQL
Канонические функции поддерживаются всеми поставщиками данных, совместимыми с Entity Framework. Их можно использовать в запросе Entity SQL. Кроме того, большинство методов расширения в LINQ to Entities транслируются в канонические функции. Они не зависят от какой-либо конкретной базы данных. Когда поставщик данных ADO.NET получает функцию, он преобразует ее в желаемый оператор SQL.[28]
Но не все СУБД обладают эквивалентной функциональностью и набором стандартных встроенных функций. Также есть отличия в точности расчетов. Следовательно, не все канонические функции поддерживаются для всех баз данных, и не все канонические функции возвращают одинаковые результаты.[нужна цитата ]
Группа | Канонические функции[28] |
---|---|
Агрегатные функции | Среднее, BigCount, Count, Max, Min, StDev, StDevP, Sum, Var, VarP |
Математические функции | Абс, Потолок, Пол, Мощность, Круглый, Усекать |
Строковые функции | Concat, Contains, EndsWith, IndexOf, Left, Length, LTrim, Replace, Reverse, Right, RTrim, Substring, StartsWith, ToLower, ToUpper, Trim |
Функции даты и времени | AddMicroseconds, AddMilliseconds, AddSeconds, AddMinutes, AddHours, AddNanoseconds, AddDays, AddYears, CreateDateTime, AddMonths, CreateDateTimeOffset, CreateTime, CurrentDateTime, CurrentDateTimeOffset, CurrentUtcDateTime, день, DayOfYear, DiffNanoseconds, DiffMilliseconds, DiffMicroseconds, DiffSeconds, DiffMinutes, DiffHours, DiffDays, DiffMonths, DiffYears, GetTotalOffsetMinutes, Hour, Millisecond, Minute, Month, Second, TruncateTime, Year |
Побитовые функции | BitWiseAnd, BitWiseNot, BitWiseOr, BitWiseXor |
Прочие функции | NewGuid |
LINQ to Entities
Эта секция нуждается в расширении. Вы можете помочь добавляя к этому. (Март 2010 г.) |
Поставщик LINQ to Entities позволяет LINQ будет использоваться для запроса различных СУБД источники данных. Доступно несколько поставщиков конкретных серверов баз данных с поддержкой Entity Framework.[нужна цитата ]
Собственный SQL
В Entity Framework v4 новые методы ExecuteStoreQuery () и ExecuteStoreCommand () были добавлены в класс ObjectContext.[нужна цитата ]
Визуализаторы
В Visual Studio есть функция, которая называется Visualizer. Запрос LINQ, написанный в Visual Studio, можно рассматривать как собственный SQL с помощью визуализатора во время сеанса отладки. Визуализатор для LINQ to Entities (объектный запрос), ориентированный на все СУБД, доступен в «VisualStudioGallery».[29]
Профилировщик Entity Framework
Entity Framework Profiler - это инструмент объектно-реляционного сопоставления (ORM), который устраняет проблемы с производительностью в ASP.NET приложение с использованием Entity Framework. Он сканирует на предмет общих неэффективных запросов к базе данных, таких как проблема SELECT N + 1.[30]
Смотрите также
использованная литература
- ^ «Релизы · dotnet / ef6 · GitHub».
- ^ «Релизы · dotnet / efcore · GitHub».
- ^ Криль, Пол (20 июля 2012 г.). «Microsoft с открытым исходным кодом Entity Framework». InfoWorld. Получено 2012-07-24.
- ^ https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/ef/overview
- ^ ADO .NET Entity Framework: вотум недоверия
- ^ «Обновление Entity Framework в .NET 4 и Visual Studio 2010». Блог команды ADO.NET. 11 мая 2009 года. Архивировано с оригинал 20 января 2010 г.. Получено 1 ноября, 2011.
- ^ «EF4.3.1 и EF5 Beta 1 доступны в NuGet». Блог команды ADO.NET. 29 февраля 2012 г. Архивировано с оригинал 25 марта 2012 г.. Получено 27 марта, 2012.
- ^ «EF5 доступен на CodePlex». 11 августа 2012 г.
- ^ "EF6 RTM доступен". 17 октября 2013 г. Архивировано с оригинал на 2014-03-30.
- ^ «Entity Framework - Главная». 14 сентября 2016 г.
- ^ «История версий EF».
- ^ а б «EF7 - Новые платформы, новые хранилища данных». 19 мая 2014 года. Архивировано с оригинал 2015-09-29.
- ^ «Доступен Entity Framework Core 1.0.0». 27 июня 2016 г.
- ^ Гензельман, Скотт. «ASP.NET 5 мертв - знакомство с ASP.NET Core 1.0 и .NET Core 1.0 - Скотт Хансельман». www.hanselman.com. Получено 2016-07-11.
- ^ «Представляем .NET Core 2.0». Блог .NET. 14 августа 2017.
- ^ «Представляем .NET Core 3.0». Блог .NET. 23 сентября 2019.
- ^ https://docs.microsoft.com/en-us/ef/core/what-is-new/
- ^ https://www.nuget.org/packages/Microsoft.EntityFrameworkCore
- ^ «Модель данных сущности». MSDN, Microsoft. 2 августа 2012 г.. Получено 15 августа, 2013.
- ^ CSDL, SSDL и MSL Технические характеристики, MSDN, в архиве из оригинала от 08.11.2010, получено 2010-12-06
- ^ Мастер модели данных сущности, MSDN, получено 2010-12-06
- ^ Kogent Solutions Inc. (2009 г.), Черная книга ASP.NET 3.5, Dreamtech Press, ISBN 81-7722-831-5
- ^ а б Простые типы (EDM), MSDN, получено 2010-12-06
- ^ Элемент ComplexType (CSDL), MSDN, получено 2010-12-06
- ^ Типы концептуальных моделей, MSDN, получено 2010-12-06
- ^ Элемент OnDelete (CSDL), MSDN, получено 2010-12-06
- ^ Фасеты (CSDL), MSDN, получено 2010-12-06
- ^ а б Канонические функции (Entity SQL), MSDN, получено 2010-03-29
- ^ VisualStudioGallery
- ^ «Профилировщик Entity Framework». hibernatingrhinos.com. Спящие носороги. Получено 2020-05-20.
Список используемой литературы
- Ли, Крейг (14 июня 2010 г.), Выпущена платформа ADO.NET Entity Framework (1-е изд.), Sams, п. 600, ISBN 0-672-33074-1, заархивировано из оригинал 1 октября 2012 г.
- Лерман, Юлия (август 2010), Программирование Entity Framework (2-е изд.), O'Reilly Media, п. 912, г. ISBN 978-0-596-80726-9
- Дженнингс, Роджер (3 февраля 2009 г.), Профессиональный ADO.NET 3.5 с LINQ и Entity Framework (1-е изд.), Wrox, п. 672, г. ISBN 0-470-18261-X, заархивировано из оригинал на 2012-10-10, получено 2010-02-06
- Мостарда, Стефано (декабрь 2010 г.), Entity Framework 4.0 в действии (1-е изд.), Публикации Мэннинга, п. 450, ISBN 978-1-935182-18-4