ADO.NET, Entity Framework
ADO.NET - это семейство технологий, которое позволяет разработчикам .NET взаимодействовать с данными стандартными, структурированными способами. Приложения, написанные с помощью .NET Framework, зависят от библиотек классов .NET, которые написаны в специальные файлах с расширением DLL, которые инкапсулируют общие функции программирования в простой в доступный формат. Большинство библиотек, поставляемых с .NET Framework, отображаются в системе пространство имен. System.IO.
ADO.NET управляет как внутренними данными - данными, создаваемыми в памяти и используемыми исключительно внутри приложения, и внешние данные - данные, размещенные в области хранения отдельно от приложения, например, в реляционной базе данных или текстовом файле. Независимо от источника, ADO.NET обобщает соответствующие данные и представляет их коду, в виде таблиц.
ADO.NET имеет много схожих терминов с Microsoft SQL Server.Таблицы, строки, столбцы, отношения, представления. Концепции ADO.NET основаны на своих аналогах в реляционных базах данных. Несмотря очевидные сходства, ADO.NET не является реляционной базой данных, потому что ADO.NET не имеет элементов "реляционный алгебры", которые обычно встречаются в реляционных базах данных. В ADO.NET также отсутствуют многие общие функции поддержки баз данных, включая индексы, хранимые процедуры и триггеры. Тем не менее, если ограничиться базовыми операциями создания, чтения, обновления и удаления (CRUD), ADO.NET может действовать как небольшая, но мощная база данных в памяти.
Основные компоненты ADO.NET
Пространство имен System.Data включает в себя множество различных классов ADO.NET, которые работают вместе, чтобы предоставить доступ к табличным данным. Библиотека включает две основные группы классов: те, которые управляют фактическими данными в программном обеспечении и теми, которые обмениваются с внешними данными системы. Рисунок демонстрирует основные элементы ADO.NET
В основе библиотеки лежит DataTable. По назначению похожи на таблицы в база данных, DataTable управляет всеми фактическими значениями данных. Каждый DataTable содержит ноль или более строк данных с отдельными значения данных каждой строки, идентифицированной определениями столбцов таблицы. Экземпляров DataTable и связанных с ними объектов достаточно для работы с внутренними данными. Для подключения к внешним данным из базы данных ADO.NET предлагает несколько поставщиков данных, включая настраиваемого поставщика для Microsoft SQL Server. Entity Framework Microsoft’s
ADO.NET Entity Framework - так же известная как EF, является реляционным представлением объектов в .NET и Visual Studio. Центральным элементом Entity Framework была модель Entity Data Model, концептуальная модель домена приложения, которая сопоставляется со схемой вашей базы данных. Эта концептуальная модель описывает основные классы в приложении. Entity Framework использует эту концептуальную модель при запросе из базы данных, создании объектов из этих данных и последующем сохранении изменений обратно в базу данных. ADO.NET обеспечивает удобный доступ программистов к контенту, находящемуся во внешнем источнике данных или созданному в приложении.
Одной из сильных сторон ядра уровня данных является его способность моделировать логическую реализацию базового источника данных. Таблицы базы данных, хранящиеся в реляционной базе данных, такой как SQL Server, могут быть введены в приложение в комплекте с конструкциями, которые эмулируют связи соединения и столбчатые типы данных каждой импортированной таблицы. Внешние ключи играют важную роль в объединении данных как в базе данных, так и в представлении DataSet.
Обрабатывая данные, поступающие в программу через DataReader, или корректируя правила TaureMapping, связанные с DataAdapter, можно изменить представление входящих структур данных, таким образом они появляются в базе данных. Однако даже при таких модификациях многие представления внешних данных в DataSet и DataTable напоминают логическое представление исходных данных.
При работе с таблицами клиентов и заказов связанный DataSet часто будет содержать объекты Customer и Order DataTable, которые являются немногим больше, чем локальные копии настоящих таблиц. Хотя это преимущество очень полезно для разработчиков, ориентированных на конкретную схему базы данных, оно также является недостатком, особенно когда изменения внешней схемы должны постоянно отражаться в коде. Entity Framework помогает устранить недостатки, уделяя особое внимание концептуальной реализации данных; представление на основе классов того, как все данные работают вместе. Вместо того, чтобы работать с отдельными записями таблиц, которые косвенно ссылаются на записи друг друга через значения внешнего ключа, объекты EF раскрывают эти отношения как член в объектно-ориентированном классе. Если DataSet может содержать отдельные таблицы Customer и Order, записи которых необходимо объединить вручную в коде, класс сущности Customer, созданный Entity Framework включает члена OrderEntries, при этом каждый экземпляр клиента уже знает о связанных с ним заказах. Внешние ключи по-прежнему важны, но Framework выясняет, как их использовать, оставляя код свободным для доступа к результатам в настоящей среде на основе экземпляров.
Entity Framework работает с разными типами плоских, реляционных и иерархических источников данных, а не только с традиционными базами данных, такими как SQL Server, поэтому имена, используемые для различных компонентов Framework, были выбраны с учетом этих различных вариантов использования. Тем не менее, в свете его стандартной основы ADO.NET и отличной поддержки SQL Server и аналогичных баз данных, полезно понимать его функции, поскольку они связаны с концепциями реляционных баз данных.
В Entity Framework можно определить все сущности, ассоциации, наборы сущностей через схемы XML. Платформа использует модель, определяемую XML, для создания классов в Visual Basic или Сишарп. Эти классы реализуют среду данных, описываемую модель. Каждая модель включает три основных уровня, которые помогают изолировать программный доступ к данным из хранилища необработанных данных, управляемого базой данных. Три слоя - это концептуальная модель (или концептуальный уровень), модель хранения (уровень хранения) и сопоставления (уровень сопоставления).
Entity Framework отображается как XML-контент с использованием трех различных XML-схем. Интерактивная справка Visual Studio включает полную документацию для этих языков схемы, так что можно самостоятельно разработать схему. Однако существует более удобный визуальный подход к созданию концептуальных и логических моделей и карты, которая их связывает. По этой причине Microsoft включила в Visual Studio конструктор моделей данных сущностей ADO.NET - средство проектирования сущностей с перетаскиванием, которое управляет параметрами концептуального уровня, хранилища и уровня сопоставления модели EF.
Сгенерированный конструктором XML-контент (сохраненный с расширением файла .edmx в вашем проекте) инкапсулирует все три части определения схемы с использованием CSDL, SSDL и MSL. При проектировании модели сущности на основе существующей базы данных мастер модели сущностных данных конструктора импортирует таблицы, представления и определения хранимых процедур из любого поддерживаемого формата базы данных.