Entity Framework
Оригинальный автор(ы) | Майкрософт |
---|---|
Разработчик(и) | Фонд .NET |
Первоначальный выпуск | 11 августа 2008 г |
Стабильная версия | Entity Framework 6: v6.4.4 Ядро Entity Framework: v8.0.0 / Entity Framework Core: 14 ноября 2023 г [1] |
Репозиторий | github github |
Написано в | С# |
Платформа | .NET Framework , .NET ядро |
Тип | Объектно-реляционное отображение |
Лицензия | Лицензия Апач 2.0 |
Веб-сайт | документы |
Entity Framework ( EF ) — это открытый исходный код. [2] Платформа объектно-реляционного сопоставления (ORM) для ADO.NET . Первоначально он поставлялся как неотъемлемая часть .NET Framework , однако, начиная с Entity Framework версии 6.0, он поставлялся отдельно от .NET Framework.
Entity Framework 6.4 был последней версией классической платформы. Хотя Entity Framework 6 по-прежнему поддерживается, он больше не разрабатывается и будет получать только исправления проблем безопасности. [3]
Новая платформа, известная как Entity Framework Core (EF Core), была представлена в 2016 году с аналогичным, но не полным набором функций. [4] Нумерация версий этой платформы возобновлена с 1.0, а последняя версия EF Core — 8.0. [5]
Обзор
[ редактировать ]Entity Framework — это набор технологий в ADO.NET , который поддерживает разработку программных приложений, ориентированных на данные. Архитекторы и разработчики приложений, ориентированных на данные, обычно сталкиваются с необходимостью достижения двух совершенно разных целей. Они должны моделировать сущности, отношения и логику бизнес-задач, которые они решают, а также работать с механизмами обработки данных, используемыми для хранения и извлечения данных. Данные могут храниться в нескольких системах хранения, каждая из которых имеет свои собственные протоколы; даже приложения, работающие с одной системой хранения, должны балансировать требования системы хранения с требованиями написания эффективного и удобного в сопровождении кода приложения. Эту проблему обычно называют « несоответствием объектно-реляционного импеданса ». [6]
Многие инструменты объектно-реляционного картирования (ORM) (также известные как «объектно-реляционные менеджеры») были разработаны, чтобы дать разработчикам возможность работать с данными в форме объектов и свойств, специфичных для предметной области, таких как клиенты и адреса клиентов, не беспокоясь о том, себя с базовыми таблицами и столбцами базы данных, в которых хранятся эти данные. С помощью ORM разработчики могут работать на более высоком уровне абстракции при работе с данными, а также создавать и поддерживать приложения, ориентированные на данные, с меньшим количеством кода, чем в традиционных приложениях. Entity Framework — это решение ORM, которое в настоящее время предлагается для использования в стеке разработки Microsoft. [7]
История
[ редактировать ]Первая версия Entity Framework (EFv1) была включена в .NET Framework 3.5 с пакетом обновления 1 и Visual Studio 2008 с пакетом обновления 1, выпущенные 11 августа 2008 года . Эта версия подверглась широкой критике, даже получив «вотум недоверия», подписанный как минимум тысячей разработчиков. [8]
Вторая версия Entity Framework, получившая название Entity Framework 4.0 (EFv4), была выпущена как часть .NET 4.0 12 апреля 2010 года и устранила многие критические замечания, высказанные в адрес версии 1. [9]
Третья версия Entity Framework, версия 4.1, была выпущена 12 апреля 2011 г. с поддержкой Code First.
Обновление версии 4.1 под названием Entity Framework 4.1 Update 1 было выпущено 25 июля 2011 г. Оно включает исправления ошибок и новые поддерживаемые типы.
Версия 4.3.1 вышла 29 февраля 2012 г. [10] Было несколько обновлений, например, поддержка миграции.
Версия 5.0.0 вышла 11 августа 2012 г. [11] и ориентирован на .NET Framework 4.5.Кроме того, эта версия доступна для .Net framework 4, но без каких-либо преимуществ во время выполнения по сравнению с версией 4.
Версия 6.0 вышла 17 октября 2013 г. [12] и теперь это проект с открытым исходным кодом, лицензированный по лицензии Apache License v2. Как и ASP.NET MVC , его исходный код размещается на GitHub с использованием Git. [13] В этой версии имеется ряд улучшений для поддержки кода . [14]
Затем Microsoft решила модернизировать, компонентизировать и сделать .NET кроссплатформенным для Linux, OSX и других систем, а это означает, что следующая версия Entity Framework будет полностью переписана. [15] 27 июня 2016 года он был выпущен как Entity Framework Core 1.0 вместе с ASP.NET Core 1.0 и .NET Core 1.0. [16] Первоначально он назывался Entity Framework 7, но был переименован, чтобы подчеркнуть, что это была полная переработка, а не постепенное обновление, и она не заменяет EF6. [17]
Entity Framework Core 1.0 распространяется по лицензии Apache License v2 и полностью создан в открытом доступе на GitHub . Хотя Entity Framework Core 1.0 имеет некоторые концептуальные сходства с предыдущими версиями Entity Framework, это была совершенно новая кодовая база, разработанная как более эффективная, мощная, гибкая и расширяемая, работающая в Windows, Linux и OSX и поддерживающая новый диапазон реляционных технологий. и хранилища данных NoSQL . [15]
Entity Framework Core 2.0 был выпущен 14 августа 2017 г. [18]
вместе с Visual Studio 2017 15.3 и ASP.NET Core 2.0.Entity Framework Core 3.0 был выпущен 23 сентября 2019 г. [19]
вместе с Visual Studio 2019 16.3 и ASP.NET Core 3.0.Entity Framework Core 3.1 (EF Core 3.1) был официально выпущен для производственного использования 3 декабря 2019 года [20] [21]
и будет предпочтительной версией с долгосрочной поддержкой как минимум до 3 декабря 2022 года.Entity Framework Core 5.0 (EF Core 5) был выпущен для промышленного использования 9 ноября 2020 г. [20] [21] Он был выведен из эксплуатации и прекратил поддержку через 1,5 года, 10 мая 2022 года. [22]
.Entity Framework Core 6.0 (EF Core 6) был выпущен 10 ноября 2021 г. [23] [24] и будет предпочтительной версией с долгосрочной поддержкой как минимум до 12 ноября 2024 года. [25]
Entity Framework Core 7.0 (EF Core 7) был выпущен 8 ноября 2022 г. [26] [27] добавление таких функций, как столбцы JSON и массовые обновления .
Entity Framework Core 8.0 (EF Core 8) был выпущен 14 ноября 2023 г. [28] [29] добавление таких функций, как объекты Value, с использованием сложных типов и коллекций примитивов .
Архитектура
[ редактировать ]Архитектура 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.
- Веб-сервисы , которые предоставляют сущности как веб-сервисы.
- Сервисы высокого уровня , такие как сервисы отчетов, которые работают с сущностями, а не с реляционными данными.
Модель данных сущности
[ редактировать ]Модель Entity Data Model ( EDM ) определяет концептуальную модель (CSDL) данных с использованием метода моделирования, который сам по себе называется Entity Data Model, расширенной версией модели сущности-связи . [30] Модель данных в первую очередь описывает сущности и ассоциации , в которых они участвуют. Схема EDM выражается на языке определения схемы (SDL), который представляет собой приложение XML (расширенный язык разметки). Кроме того, также необходимо указать отображение (MSL) элементов концептуальной схемы (CSDL) в схему хранения (SSDL). Спецификация сопоставления также выражается в XML. [31]
Visual Studio также предоставляет Entity Designer для визуального создания EDM и спецификации сопоставления. Этот подход называется подходом «Сначала модель» в качестве альтернативы подходам «Сначала код» и «Сначала база данных». Результатом работы инструмента является XML-файл (*.edmx), определяющий схему и сопоставление. Файл Edmx содержит артефакты метаданных EF (содержимое CSDL/MSL/SSDL). Эти три файла (csdl, msl, ssdl) также можно создавать или редактировать вручную. [ нужна ссылка ] Подход «Модель прежде всего» не будет поддерживаться в версии EF Core. [32]
Картирование
[ редактировать ]Мастер модели сущностных данных [33] в Visual Studio в большинстве случаев изначально генерируется взаимно однозначное (1:1) сопоставление между схемой базы данных и концептуальной схемой. В реляционной схеме элементы состоят из таблиц, при этом первичные и внешние ключи связывают связанные таблицы вместе. Напротив, типы сущностей определяют концептуальную схему данных. [ нужна ссылка ]
Типы сущностей представляют собой совокупность нескольких типизированных полей — каждое поле сопоставляется с определенным столбцом в базе данных — и может содержать информацию из нескольких физических таблиц. Типы сущностей могут быть связаны друг с другом независимо от отношений в физической схеме. Связанные сущности также отображаются аналогичным образом – через поле, имя которого обозначает отношение, в котором они участвуют и к которому они обращаются, которое вместо получения значения из какого-либо столбца в базе данных обходит отношение и возвращает объект (или коллекцию сущностей) с с чем это связано. [ нужна ссылка ]
В этом разделе отсутствует информация о том, где описание примера?. ( февраль 2024 г. ) |
Типы сущностей образуют класс объектов, которым соответствуют сущности, причем сущности являются экземплярами типов сущностей. Сущности представляют собой отдельные объекты, которые составляют часть проблемы, решаемой приложением, и индексируются ключом. Например, преобразуя описанную выше физическую схему, у нас будет два типа сущностей:
- CustomerEntity , который содержит имя клиента из таблицы «Клиенты» и адрес клиента из таблицы «Контакты» .
- OrderEntity , который инкапсулирует заказы определенного клиента, извлекая их из таблицы Orders .
Логическая схема и ее сопоставление с физической схемой представлены как модель данных объекта (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 Data Services ) или XML, который используется, когда объекты сериализуются для постоянного хранения или передачи по сети. [34]
Сущности
[ редактировать ]Сущности** являются экземплярами EntityType s; они представляют собой отдельные экземпляры объектов (таких как клиент , заказы ), к которым относится информация. Идентичность сущности определяется типом сущности, экземпляром которой она является; в этом смысле тип сущности определяет класс, к которому принадлежит сущность, а также определяет, какие свойства будет иметь сущность. Свойства описывают некоторые аспекты сущности, присваивая ей имя и тип. Свойства типа сущности в ADO.NET Entity Framework полностью типизированы и полностью совместимы с системой типов, используемой в системе СУБД, а также с системой общих типов .NET Framework. Свойство может быть SimpleType или ComplexType , а также может быть многозначным. Все EntityType принадлежат некоторому пространству имен и имеют свойство EntityKey , которое уникально идентифицирует каждый экземпляр типа сущности. Различные типы недвижимости различаются следующим образом: [ нужна ссылка ]
- SimpleType соответствует примитивным типам данных, таким как целые числа , символы и числа с плавающей запятой . [35]
- ComplexType — это совокупность нескольких свойств типа SimpleType или ComplexType . в отличие от EntityType Однако, , ComplexTypes не может иметь EntityKey . В Entity Framework v1 сложные типы не могут быть унаследованы. [36]
Все экземпляры сущностей размещаются в EntityContainers, которые представляют собой контейнеры для сущностей каждого проекта. Каждый проект имеет один или несколько именованных EntityContainers, которые могут ссылаться на сущности в нескольких пространствах имен и типах сущностей. Несколько экземпляров одного типа сущности могут храниться в коллекциях, называемых EntitySets. Один тип сущности может иметь несколько наборов EntitySet. [ нужна ссылка ]
Примитивные типы EDM (простые типы): [35] [37]
Тип электроэрозионного электроэрозионного станка | CLR Сопоставление типов |
---|---|
Эдм.Бинарный | Байт[] |
Edm.Boolean | логическое значение |
Эдм.Байт | Байт |
Эдм.ДатаВремя | ДатаВремя |
Эдм.DateTimeOffset | ДатаВремяСмещение |
Эдм.Десятичный | десятичный |
Эдм.Дабл | Двойной |
Эдм.Гид | Руководство |
Эдм.Int16 | Int16 |
Эдм.Int32 | Int32 |
Эдм.Int64 | Int64 |
Эдм.SByte | SByte |
Эдм.Сингл | Одинокий |
Эдм.Строка | Нить |
Эдм.Время | TimeSpan |
Отношения
[ редактировать ]Любые два типа сущностей могут быть связаны либо отношением ассоциации , либо отношением включения . Например, счет за доставку выставляется клиенту — это связь, тогда как заказ, содержащий сведения о заказе, — это включающее отношение. Отношение включения также можно использовать для моделирования наследования между сущностями. Связь между двумя типами сущностей определяется типом отношений , экземпляры которого, называемые отношениями , связывают экземпляры сущностей. В будущих выпусках могут быть представлены другие виды типов отношений, такие как Composition или Identification . [ нужна ссылка ]
Типы отношений характеризуются степенью (арностью) или количеством типов сущностей, с которыми они связаны, и их множественностью. Однако в первоначальном выпуске ADO.NET Entity Framework отношения ограничиваются бинарными (второй степени) двунаправленными отношениями. Множественность определяет, сколько экземпляров сущности могут быть связаны друг с другом. В зависимости от множественности связи могут быть типа «один к одному», «один ко многим» или «многие ко многим». Отношения между сущностями именуются; имя называется Роль. Это определяет цель отношений. [ нужна ссылка ]
С типом связи также может быть связана операция или действие , что позволяет выполнять некоторые действия над объектом в случае выполнения действия над связанным объектом. Отношения могут быть указаны для выполнения действия , когда какая-либо операция выполняется над связанной сущностью. Например, при удалении сущности, которая является частью отношения ( операция OnDelete ), можно предпринять следующие действия: [38]
- Cascade , который предписывает удалить экземпляр связи и все связанные экземпляры сущностей.
- Никто .
Для отношений ассоциации, которые могут иметь разную семантику на обоих концах, для каждого конца могут быть указаны разные действия. [ нужна ссылка ]
Язык определения схемы
[ редактировать ]ADO.NET Entity Framework использует язык определения данных на основе XML, называемый языком определения схемы (SDL), для определения схемы EDM. SDL определяет SimpleTypes, аналогичные примитивным типам CTS , включая String , Int32 , Double , Decimal , Guid и DateTime , среди прочих. Enumeration . , определяющий карту примитивных значений и имен, также считается простым типом Перечисления поддерживаются только начиная с версии платформы 5.0. ComplexTypes создаются из совокупности других типов. Коллекция свойств этих типов определяет тип сущности. Это определение можно записать в грамматике EBNF как: [ нужна ссылка ]
EntityType ::= ENTITYTYPE entityTypeName [BASE entityTypeName] [ABSTRACT true|false] KEY propertyName [, propertyName]* {(propertyName PropertyType [PropertyFacet]*) +}PropertyType ::= ( (PrimitiveType [PrimitiveTypeFacets]*) | (complexTypeName) | RowType PropertyFacet ::= ( [NULLABLE true | false] | [DEFAULT defaultVal] | [MULTIPLICITY [1|*]] ) PropertyTypeFacet ::= MAXLENGTH | PRECISION | SCALE | UNICODE | FIXEDLENGTH | COLLATION | DATETIMEKIND | PRESERVESECONDS PrimitiveType ::= BINARY | STRING | BOOLEAN | SINGLE | DOUBLE | DECIMAL | GUID | BYTE | SBYTE | INT16 | INT32 | INT64 | DATETIME | DATETIMEOFFSET | TIME)
Фасеты используются для описания метаданных свойства, например, имеет ли оно значение NULL или имеет значение по умолчанию, а также мощность свойства, т. е. является ли свойство однозначным или многозначным. Кратность «1» обозначает однозначное свойство; «*» означает, что это многозначное свойство. Например, сущность можно обозначить на SDL как: [39]
<ComplexType Name="Addr"> <Property Name="Street" Type="String" Nullable="false" /> <Property Name="City" Type="String" Nullable="false" /> <Property Name="Country" Type="String" Nullable="false" /> <Property Name="PostalCode" Type="Int32" /></ComplexType><EntityType Name="Customer"> <Key> <PropertyRef Name="Email" /> </Key> <Property Name="Name" Type="String" /> <Property Name="Email" Type="String" Nullable="false" /> <Property Name="Address" Type="Addr" /></EntityType>
Тип связи определяется как указание конечных точек и их кратности. Например, связь «один ко многим» между Клиентом и Заказами можно определить как
<Association Name="CustomerAndOrders"> <End Type="Customer" Multiplicity="1" /> <End Type="Orders" Multiplicity="*"> <OnDelete Action="Cascade" /> </End></Association>
Запрос данных
[ редактировать ]Сущностный SQL
[ редактировать ]ADO.NET Entity Framework использует вариант языка структурированных запросов под названием Entity SQL , который предназначен для написания декларативных запросов и обновлений сущностей и отношений сущностей — на концептуальном уровне. Он отличается от SQL тем, что не имеет явных конструкций для соединений , поскольку EDM предназначен для абстрактного разделения данных по таблицам. [ нужна ссылка ]
Запросы к концептуальной модели выполняются классами EntityClient , которые принимают запросы Entity SQL. Конвейер запросов анализирует запрос Entity SQL в дереве команд, разделяя запрос на несколько таблиц, которые передаются поставщику EntityClient. Как и поставщики данных ADO.NET, поставщик EntityClient также инициализируется с использованием объекта Connection , которому в дополнение к обычным параметрам хранилища данных и информации аутентификации требуются схема SDL и информация о сопоставлении. Поставщик EntityClient, в свою очередь, затем преобразует дерево команд Entity SQL в SQL-запрос в собственном варианте базы данных. Затем выполнение запроса возвращает набор результатов Entity SQL, который не ограничен табличной структурой, в отличие от наборов результатов ADO.NET. [ нужна ссылка ]
Entity SQL расширяет возможности SQL, добавляя внутреннюю поддержку: [ нужна ссылка ]
- Types , поскольку объекты ADO.NET полностью типизированы.
- EntitySets , которые рассматриваются как коллекции сущностей.
- Компонуемость , которая снимает ограничения на использование подзапросов.
Канонические функции Entity SQL
[ редактировать ]Канонические функции поддерживаются всеми поставщиками данных, совместимыми с Entity Framework. Их можно использовать в запросе Entity SQL. Кроме того, большинство методов расширения в LINQ to Entities переводятся в канонические функции. Они независимы от какой-либо конкретной базы данных. Когда поставщик данных ADO.NET получает функцию, он преобразует ее в нужный оператор SQL. [40]
Но не все СУБД имеют равноценный функционал и набор стандартных встроенных функций. Есть различия и в точности расчетов. Таким образом, не все канонические функции поддерживаются для всех баз данных, и не все канонические функции возвращают одинаковые результаты. [ нужна ссылка ]
Группа | Канонические функции [40] |
---|---|
Агрегатные функции | Avg, BigCount, Count, Max, Min, StDev, StDevP, Sum, Var, VarP |
Математические функции | Пресс, Потолок, Пол, Мощность, Круглый, Усечь |
Строковые функции | Concat, Содержит, EndsWith, IndexOf, Влево, Длина, LTrim, Заменить, Обратный, Вправо, RTrim, Подстрока, StartsWith, ToLower, ToUpper, Trim |
Функции даты и времени | AddMicroсекунды, AddMilliсекунды, AddSeconds, AddMinutes, AddHours, AddNano Seconds, AddDays, AddYears, CreateDateTime, AddMonths, CreateDateTimeOffset, CreateTime, CurrentDateTime, CurrentDateTimeOffset, CurrentUtcDateTime, Day, DayOfYear, DiffNanoсекунды, DiffMilliсекунды, DiffMicroсекунды, DiffSeconds, нуты, DiffHours, DiffDays, DiffMonths, DiffYears, GetTotalOffsetMinutes, час, миллисекунда, минута, месяц, секунда, TruncateTime, год |
Побитовые функции | BitWiseAnd, BitWiseNot, BitWiseOr, BitWiseXor |
Другие функции | НовыйГид |
LINQ для сущностей
[ редактировать ]Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( март 2010 г. ) |
Поставщик LINQ to Entities позволяет LINQ использовать для запроса различных источников данных РСУБД . Доступно несколько поставщиков серверов баз данных с поддержкой Entity Framework. [ нужна ссылка ]
Собственный SQL
[ редактировать ]В Entity Framework v4 новые методы ExecuteStoreQuery() и ExecuteStoreCommand() . в класс ObjectContext были добавлены [ нужна ссылка ]
Визуализаторы
[ редактировать ]В Visual Studio есть функция Visualizer. Запрос LINQ, написанный в Visual Studio, можно просмотреть как собственный SQL с помощью визуализатора во время сеанса отладки. Визуализатор для LINQ to Entities (объектный запрос), предназначенный для всех СУБД, доступен в Visual Studio Marketplace. [41]
Профилирование производительности
[ редактировать ]Коммерчески доступны различные профилировщики для устранения проблем с производительностью с помощью Entity Framework как для вариантов EF, так и для EF Core.
Инструменты и расширения — Entity Framework Core
[ редактировать ]Доступны инструменты и расширения Entity Framework Core для повышения производительности Entity Framework Core. [42]
Инструменты и расширения — Entity Framework EF6
[ редактировать ]Доступны инструменты и расширения Entity Framework для повышения производительности Entity Framework. [43]
См. также
[ редактировать ]- Список программного обеспечения объектно-реляционного картографирования
- LINQ-SQL
- .NET Persistence API (NPA)
Ссылки
[ редактировать ]- ^ «Релизы · dotnet/efcore · GitHub» . Гитхаб .
- ^ Криль, Пол (20 июля 2012 г.). «Entity Framework с открытым исходным кодом Microsoft» . Инфомир . Проверено 24 июля 2012 г.
- ^ айцвикерс (9 марта 2022 г.). «Политики поддержки Entity Framework» . Learn.microsoft.com . Проверено 12 декабря 2022 г.
- ^ айцвикерс. «Сравнить EF6 и EF Core» . Learn.microsoft.com . Проверено 12 декабря 2022 г.
- ^ айцвикерс (14 ноября 2023 г.). «Что нового в EF Core 8» . Learn.microsoft.com . Проверено 14 ноября 2023 г.
- ^ «Объектно-реляционное несоответствие импеданса» . AgileData.org . Проверено 12 декабря 2022 г.
- ^ Макбланк (15 сентября 2021 г.). «Обзор Entity Framework — ADO.NET» . Learn.microsoft.com . Проверено 12 декабря 2022 г.
- ^ «Entity Framework вотум недоверия подписавшим сторонам | Wufoo» . efvote.wufoo.com . Проверено 12 декабря 2022 г.
- ^ «Обновление 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. Архивировано из оригинала 7 сентября 2017 года . Проверено 20 марта 2014 г.
- ^ «Доступна EF6 RTM» . 17 октября 2013 г. Архивировано из оригинала 30 марта 2014 г.
- ^ «Entity Framework — Главная страница» . Гитхаб . 14 сентября 2016 г.
- ^ айцвикерс (14 октября 2020 г.). «Что нового — EF6» . Learn.microsoft.com . Проверено 12 декабря 2022 г.
- ^ Перейти обратно: а б «EF7 — Новые платформы, новые хранилища данных» . 19 мая 2014 г. Архивировано из оригинала 29 сентября 2015 г.
- ^ «Доступна Entity Framework Core 1.0.0» . 27 июня 2016 г.
- ^ Генсельман, Скотт. «ASP.NET 5 мертв. Представляем ASP.NET Core 1.0 и .NET Core 1.0 — Скотт Хансельман» . www.hanselman.com . Проверено 11 июля 2016 г.
- ^ «Анонс .NET Core 2.0» . .NET-блог. 14 августа 2017 г.
- ^ «Анонс .NET Core 3.0» . .NET-блог. 23 сентября 2019 г.
- ^ Перейти обратно: а б айцвикерс. «План для Entity Framework Core 5.0» . Learn.microsoft.com . Проверено 12 декабря 2022 г.
- ^ Перейти обратно: а б «Microsoft.EntityFrameworkCore 5.0.0» . nuget.org . Проверено 12 декабря 2022 г.
- ^ «Основные выпуски и планирование Entity Framework» . Декабрь 2023.
- ^ айцвикерс. «План для Entity Framework Core 6.0» . Learn.microsoft.com . Проверено 12 декабря 2022 г.
- ^ «Microsoft.EntityFrameworkCore 6.0.0» . nuget.org . Проверено 12 декабря 2022 г.
- ^ айцвикерс. «Выпуски и планирование EF Core» . Learn.microsoft.com . Проверено 12 декабря 2022 г.
- ^ Рот, Дэниел (08 ноября 2022 г.). «Анонс ASP.NET Core в .NET 7» . .NET-блог . Проверено 12 декабря 2022 г.
- ^ айцвикерс. «Что нового в EF Core 7.0» . Learn.microsoft.com . Проверено 12 декабря 2022 г.
- ^ Артур, Викерс (14 ноября 2023 г.). «Entity Framework Core 8 (EF8) доступен сегодня» . .NET-блог . Проверено 14 ноября 2023 г.
- ^ айцвикерс (14 ноября 2023 г.). «Что нового в EF Core 8» . Learn.microsoft.com . Проверено 14 ноября 2023 г.
- ^ «Модель данных объекта» . MSDN, Майкрософт. 2 августа 2012 года . Проверено 15 августа 2013 г.
- ^ Спецификации CSDL, SSDL и MSL , MSDN , заархивировано из оригинала 8 ноября 2010 г. , получено 6 декабря 2010 г.
- ^ айцвиккерс (09 марта 2022 г.). «Портирование с EF6 на EF Core — перенос модели на основе EDMX — EF» . Learn.microsoft.com . Проверено 7 июня 2024 г.
- ^ Мастер модели Entity Data Model , MSDN , получено 6 декабря 2010 г.
- ^ Kogent Solutions Inc. (2009), Черная книга ASP.NET 3.5 , Dreamtech Press, ISBN 978-81-7722-831-1
- ^ Перейти обратно: а б Простые типы (EDM) , MSDN , получено 6 декабря 2010 г.
- ^ Элемент ComplexType (CSDL) , MSDN , получено 6 декабря 2010 г.
- ^ Типы концептуальных моделей , MSDN , получено 6 декабря 2010 г.
- ^ OnDelete Element (CSDL) , MSDN , получено 6 декабря 2010 г.
- ^ Фасеты (CSDL) , MSDN , получено 6 декабря 2010 г.
- ^ Перейти обратно: а б Канонические функции (Entity SQL) , MSDN , получено 29 марта 2010 г.
- ^ «Визуализатор запросов Linq to Entity — Visual Studio Marketplace» . marketplace.visualstudio.com . Проверено 12 декабря 2022 г.
- ^ ЭрикЭДЖ. «Инструменты и расширения — EF Core» . Learn.microsoft.com . Проверено 12 декабря 2022 г.
- ^ айцвикерс (9 марта 2022 г.). «Инструменты и расширения — EF6» . Learn.microsoft.com . Проверено 12 декабря 2022 г.
Библиография
[ редактировать ]- Ли, Крейг (14 июня 2010 г.), ADO.NET Entity Framework Unleashed (1-е изд.), Sams , стр. 600, ISBN 978-0-672-33074-2 , заархивировано из оригинала 1 октября 2012 г.
- Лерман, Джулия (август 2010 г.), Programming Entity Framework (2-е изд.), O'Reilly Media , стр. 912, ISBN 978-0-596-80726-9
- Дженнингс, Роджер (3 февраля 2009 г.), Professional ADO.NET 3.5 с LINQ и Entity Framework (1-е изд.), Wrox , стр. 672, ISBN 978-0-470-18261-1 , заархивировано из оригинала 10 октября 2012 г. , получено 6 февраля 2010 г.
- Мостарда, Стефано (декабрь 2010 г.), Entity Framework 4.0 в действии (1-е изд.), Manning Publications , стр. 450, ISBN 978-1-935182-18-4