Перейти к содержимому

Модель ado net edm как добавить в vs

  • автор:

Модель EDM

Понимая предназначение платформы ADO.NET Entity Framewrok, а также имея общее представление о ее работе, можно приступать к рассмотрению первого примера. Чтобы пока не усложнять картину, построим модель EDM, которая обеспечит доступ только к таблице Inventory базы данных AutoLot, созданной ранее — ADO_NET/base/level3/3_2.php. Разобравшись с основами, мы затем построим новую модель EDM, которая будет рассчитана на всю базу данных AutoLot.

Генерация файла *.edmx

Начнем с создания консольного приложения. Когда планируется использование Entity Framework, первый шаг состоит в генерации необходимой концептуальной, логической и физической модели данных, определенной в файле *.edmx. Один из способов предусматривает применение для этого утилиты командной строки EdmGen.exe из комплекта .NET 4.0 SDK. Откройте окно командной строки Visual Studio 2010 и введите следующую команду:

EdmGen.exe -?

На консоль выводится список опций, которые можно указывать утилите для генерации необходимых файлов, основываясь на существующей базе данных; кроме того, доступны опции для генерации совершенно новой базы данных на основе имеющихся сущностных файлов. Ниже описаны некоторые общие опции EdmGen.exe:

/mode:FullGeneration

Генерировать файлы *.ssdl, *.msl, *.csdl и клиентские сущности из указанной базы данных

/project:

Базовое имя, которое должно использоваться для сгенерированного кода и файлов. Обычно это имя базы данных, из которой извлекается информация (допускается сокращенная форма — /р:)

/connectionstring:

Строка соединения, используемая для взаимодействия с базой данных (допускается сокращенная форма — /с:)

/language:

Позволяет указать, какой синтаксис должен использоваться для сгенерированного кода — C# или VB

/pluralize

Позволяет автоматически выбирать множественное или единственное число для имени набора сущностей, имени типа сущности и имени навигационного свойства, согласно правилам английского языка

Как и платформа .NET 4.0 в целом, программная модель EF поддерживает программирование в стиле сначала домен, что позволяет создавать свойства (с применением типичных объектно-ориентированных приемов) и использовать их для генерации новой базы данных. В этом вводном обзоре ADO.NET EF ни подход «сначала модель», ни генерация сущностной модели клиентской стороны с помощью утилиты EdmGen.exe применяться не будут. Вместо этого будут использоваться визуальные конструкторы EDM из среды Visual Studio 2010.

Выберите пункт меню Project —> Add New Item (Проект —> Добавить новый элемент) и вставьте новый элемент ADO.NET Entity Data Model по имени InventoryEDM.edmx:

Вставка нового элемента ADO.NET EDM

Щелчок на кнопке Add (Добавить) приводит к запуску мастера создания модели сущностных данных (Entity Data Model Wizard). На первом шаге мастер позволяет выбрать, нужно генерировать EDM из существующей базы данных либо определить пустую модель (для разработки в стиле «сначала модель»). Выберите опцию Generate from database (Генерировать из базы данных) и щелкните на кнопке Next (Далее).

На втором шаге мастера выбирается база данных. Если соединение с базой данных внутри проводника сервера Visual Studio 2010 уже существует, оно будет присутствовать в раскрывающемся списке. Если же нет, щелкните на кнопке New Connection (Создать соединение). В любом случае выберите базу данных AutoLot и отметьте флажок Save entity connection settings in App.config as (Сохранить настройки соединения в файле App.config как):

Выбор базы данных для генерации EDM

Прежде чем щелкать на кнопке Next, взгляните на формат строки соединения:

metadata=res://*/InventoryEDM.csdl|res://*/InventoryEDM.ssdl|res://*/InventoryEDM.msl; provider=System.Data.SqlClient;provider connection string="Data Source=MICROSOF-1EA29E\SQLEXPRESS;Initial Catalog=AutoLot; Integrated Security=True;Pooling=False"

Основной интерес в ней представляет флаг metadata, который используется для указания имен встроенных данных XML-ресурсов концептуального, физического и файла отображений (вспомните, что во время компиляции файл *.edmx будет разделен на отдельные файлы, и данные этих файлов примут вид двоичных ресурсов, встраиваемых в сборку).

На последнем шаге мастера можно выбрать элементы из базы данных, для которой необходимо сгенерировать модель EDM. В рассматриваемом примере ограничимся только таблицей Inventory. Щелкните на кнопке Finish для генерации модели EDM.

Изменение формы сущностных данных

После завершения работы с мастером откроется визуальный конструктор EDM в IDE-среде с одной сущностью по имени Inventory. Просмотреть композицию любой сущности в визуальном конструкторе можно в окне Model Browser (Браузер моделей), которое открывается через пункт меню View —> Other Windows (Вид —> Другие окна).

Теперь взгляните на формат концептуальной модели для таблицы базы данных Inventory, представленный в папке Entity Types (Типы сущности). В узле хранилища, имя которого совпадает с именем базы данных (AutoLotModel.Store), находится физическая модель базы данных:

Визуальный конструктор EDM и окно браузера моделей

По умолчанию имена сущностей будут основаны на именах исходных объектов баз данных; однако, вспомните, что имена сущностей в концептуальной модели могут быть любыми. Чтобы изменить имя сущности либо имена свойств сущности, необходимо выбрать нужный элемент в визуальном конструкторе и установить соответствующим образом свойство Name в окне свойств (Properties). Переименуйте сущность Inventory в Car и свойство PetName в CarNickname:

Изменение формы сущностей с помощью окна свойств

Теперь выберите сущность Car в визуальном конструкторе и снова загляните в окно Properties. Вы должны увидеть поле Entity Set Name (Имя набора сущностей), также переименованное из Inventories в Cars. Значение Entity Set Name важно, потому что оно соответствует имени свойства в классе контекста данных, который используется для модификации базы данных. Вспомните, что это свойство инкапсулирует переменную-член ObjectSet класса-наследника ObjectContext.

Прежде чем двигаться дальше, скомпилируйте приложение; это приведет к обновлению кодовой базы и генерации файлов *.csdl, *.msl и *.ssdl на основе данных файла *.edmx.

Просмотр отображений

Имея данные в измененной форме, можно просматривать отображения между концептуальным уровнем и физическим уровнем в окне Mapping Details (Сведения об отображениях), которое открывается через пункт меню View —> Other Windows —> Mapping Details. Взгляните на рисунок ниже и обратите внимание, что узлы в левой части дерева представляют имена данных из физического уровня, в то время как узлы справа представляют имена концептуальной модели:

Mapping Details

Просмотр данных сгенерированного файла *.edmx

Теперь давайте посмотрим, что именно мастер EDM Wizard сгенерировал. Щелкните правой кнопкой мыши на файле InventoryEDM.edmx в проводнике решения и выберите в контекстном меню пункт Open With. (Открыть с помощью). В открывшемся диалоговом окне выберите опцию XML Editor (Редактор XML). Это позволит просмотреть XML-данные, лежащие в основе представления в визуальном конструкторе EDM. Структура этого XML-документа разделена на четыре части: все они находятся в корневом элементе .

Подэлемент определяет XML-данные для концептуальной, физической и модели уровня отображения. Ниже показано определение физической таблицы базы данных Inventory:

Обратите внимание, что узел определяет имя поставщика данных ADO.NET, который использует эту информацию при взаимодействии с базой данных (System.Data.SqlClient). Узлами помечается имя физической таблицы базы данных, а также каждый столбец в таблице.

Следующая важная часть файла *.edmx — элемент . который определяет измененные сущности клиентской стороны. Как видно, сущность Cars определяет свойство CarNickname, которое изменяется в визуальном конструкторе:

Это перемещает на уровень отображения, который окно Mapping Details и исполняющая среда EF используют для подключения имен в концептуальной модели к физической модели:

Последней частью файла *.edmx является элемент . который исполняющей средой EF не используется. Он содержит инструкции, используемые Visual Studio для отображения сущностей на поверхности визуального конструктора.

Удостоверьтесь, что проект скомпилирован, по крайней мере, однажды, и щелкните на кнопке Show All Files (Показать все файлы) в проводнике решений. Затем зайдите в папку obj\Debug, а после этого — в edmxResourcesToEmbed. Здесь находятся три XML-файла, основанные на содержимом файла *.edmx:

Файл *.edmx используется для генерации трех отдельных XML-файлоы

Данные в этих файлах будут встроены в сборку как двоичные ресурсы. Таким образом, приложение .NET обладает всей информацией, необходимой для понимания концептуального, физического и уровня отображения модели EDM.

ADO.NET edm отсутствует в Visual Studio

Вы можете столкнуться с тем, что при попытке добавить к своему проекту в Visual Studio модель ADO.NET EDM, вы ее не найдете в списке доступных элементов. Вы можете попробовать произвести действия указанные ниже, чтобы решить данную проблему.

Отслеживать
задан 15 янв 2020 в 13:26
Алексей Федотов Алексей Федотов
714 6 6 серебряных знаков 21 21 бронзовый знак
Отредактируйте вопрос как вопрос
24 дек 2020 в 2:06

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

введите сюда описание изображения

Во-первых, ADO.NET EDM доступна не для всех проектов в VS (во всяком случае, сразу). Обратите внимание, какой проект вы создаете. Например:

Оба приложения — консольные. Однако только в проект слева можно добавить ADO. Если вы хотите сделать консольное приложение, то выбирайте простое консольное приложение для командной строки.

Если указанное действие не помогло, убедитесь, что у Вас установлен Entity Framework. Для этого откройте инсталлер Visual Studio (пуск -> в строку поиска «Visual studio installer»), нажмите «Дополнительно», затем «Изменить». Во вкладке «Отдельные компоненты» проверьте, установлен ли пакет/библиотека «Инструменты для Entity Framework 6». Если его нет — установите.

Не факт, что данные рекомендации помогут именно Вам, но наверняка приблизят Вас к цели.

Отслеживать
ответ дан 15 янв 2020 в 13:26
Алексей Федотов Алексей Федотов
714 6 6 серебряных знаков 21 21 бронзовый знак
А зачем вам EDM в новом проекте в 2020?
24 дек 2020 в 2:08

  • c#
  • ado.net
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.17.3574

Лекции / Глава 17. Entity Framework

С помощью специального класса PluralizationService Entity Framework проводит сопоставление между именами классов моделей и именами таблиц. При этом таблицы получают по умолчанию в качестве названия множественное число в соответствии с правилами английского языка, например, класс User — таблица Users, класс Person — таблица People (но не Persons!). Названия столбцов получают названия свойств модели. Если нас не устраивают названия таблиц и столбцов по умолчанию, то мы можем переопределить данный механизм с помощью Fluent API или аннотаций. §17.4 Автоматизация Code First Вручную создавать классы по уже готовой базе данных со всеми полями и связями между собой довольно утомительно, особенно если таблиц в БД очень много. В обновленных версиях Visual Studio 2019 мы можем автоматизировать этот процесс. Для этого добавим в проект новый элемент Модель ADO.NET Entity Data Model (EDM) : Рисунок 9 11

Нажмем OK и нам откроется мастер создания модели. Здесь нам надо выбрать пункт Code First из базы данных : Рисунок 10 Далее на следующем шаге настройки модели надо будет установить подключение к имеющейся базе данных. 12

Рисунок 11 После этого в окне мастера настройки модели появится выбранное подключение. И также здесь мы можем установить название подключения, которое будет использоваться в файле конфигурации App.config. Изменим его, например, на UserContext : Рисунок 12 13

Нажмем «Далее», и на следующем шаге нам будет предложено выбрать те таблицы из базы данных, по которым нам надо создать модели: Рисунок 13 И затем нажмем «Готово». После этого будут сгенерированы классы моделей. Например, в моем случае по единственной таблице в базе данных будет сгенерирован следующий класс: Листинг 17.4

1 public partial class User
2
3 public int Id
4 [StringLength(50)]
5 public string Name
6 public int ? Age
7 [StringLength(50)]
8 public string Log
9 [StringLength(50)]
10 public string Password
11 >
12 public partial class User
13
14 public int Id
15 [StringLength(50)]
16 public string Name
14
1 public class UserContext : DbContext
2
3 public UserContext() : base(«UserContext»)
4
5 public DbSet Users
6 >

И теперь мы можем взаимодействовать с базой данных. Для этого разработаем графический пользовательский интерфейс, как на рисунке 8, и добавим в класс формы те же самые методы, которые были созданы для получения данных из БД (листинг 17.3). §17.5 Database First Database First был первым подходом, который появился в Entity Framework. Данный подход во многом похож на Model First и подходит для тех случаев, когда разработчик уже имеет готовую базу данных. Чтобы Entity Framework мог получить доступ к базе данных, в системе должен быть установлен соответствующий провайдер . Так, Visual Studio уже поддерживает соответствующую инфраструктуру для СУБД MS SQL Server. Для остальных СУБД, например, MySQL, Oracle и других надо устанавливать соответствующие провайдеры 1 . 1 Список провайдеров для наиболее распространенных СУБД можно найти на странице https://docs.microsoft.com/ru-ru/dotnet/framework/data/adonet/ado-net-overview?redirectedfrom=MSDN 15

Итак, создадим новый проект по типу Приложение Windows Forms . После создания нового проекта, чтобы задействовать базу данных, нам надо ее иметь. Создадим новую базу данных или возьмем уже имеющуюся. В Visual Studio в окне Обозреватель решений нажмем на проект правой кнопкой мыши и выберем Добавить → Создать элемент . Далее в появившемся окне добавления нового элемента выберем Модель ADO.NET EDM . Дадим новому компоненту какое-либо название, например, User: Рисунок 14 После этого нам откроется окно мастера создания модели. В нем нам надо выбрать опцию Конструктор EF из базы данных . 16

Рисунок 15 Затем откроется окно следующего шага по созданию модели, на котором надо будет установить подключение к базе данных: Рисунок 16 В выпадающем списке выберем одно из доступных подключений. Если в списке нет предпочтительных подключений, то можно нажать на кнопку Создать соединение… и установить новое подключение. 17

Также внизу указывается название контекста данных, который будет использоваться для доступа к данным. По умолчанию у меня контекст имеет название userdbEntities . Можно изменить, а можно и оставить. Выбрав подключение, переходим к следующему шагу. Если у нас Visual Studio 2019 без пакетов обновления, то будет предложено также выбрать версию Entity Framework. Выберем шестую версию: Рисунок 17 Далее Visual Studio извлекает всю информацию о базе данных: 18

Рисунок 18 Раскроем узел Таблицы . Он отображает все таблицы, имеющиеся в базе данных. В моем случае имеется только одна таблица Users. Отметим все подузлы в ветке Таблицы . В поле Пространство имен модели установим предпочтительное имя модели и нажмем Готово . После этого Entity Framework сгенерирует модель по базе данных и добавит ее в проект. Visual Studio отобразит нам схему модели. В моем случае в базе данных есть только одна таблица Users, поэтому на схеме отображается только одна сущность User: Рисунок 19 19

После выделения сущности в правом нижнем углу Visual Studio мы увидим свойства для этой сущности: Рисунок 20 Свойство Name в окне свойств указывает на класс, которым будет представлена данная сущность (то есть классом User ). А свойство Имя набора сущностей указывает на имя набора объектов (то есть свойство DbSet контекста данных) — в данном случае Users . И теперь мы можем взаимодействовать с базой данных. Для этого можно разработать такой же графический пользовательский интерфейс, как на рисунке 8, и добавить в класс формы те же самые методы, которые были созданы для получения данных из БД (листинг 17.3). Единственное исключение – это класс контекста данных. При реализации подхода Database First будем использовать класс userdbEntities , определенный в мастере моделей EDM (Рисунок 16). §17.6 Model First Model First представляет еще один подход к работе с Entity Framework. Суть данного подхода состоит в том, что сначала делается модель, а потом по ней создается база данных. Итак, создадим новый проект по типу Приложение Windows Forms . И затем добавим в проект новый элемент. Нажмем правой кнопкой мыши на проект в окне Обозреватель решений и в появившемся списке выберем Добавить → Создать элемент . И затем в окне добавления нового элемента выберем Модель ADO.NET EDM : 20

EDM (модель данных с использованием сущностей)

Модель EDM — это набор основных понятий, которые описывают структуру данных независимо от формы хранения. Модель EDM заимствует свойства модели «сущность-связь», описанной Питером Ченом в 1976 г., более того, она строится на модели «сущность-связь» и расширяет возможности ее традиционного использования.

Модель EDM решает проблемы, возникающие из необходимости хранить данные в различных формах. Например, предположим, есть фирма, которая хранит данные в реляционных базах данных, текстовых файлах, файлах XML, электронных таблицах и отчетах. Это является значительным препятствием для моделирования данных, проектирования приложений и доступа к данным. Во время проектирования приложения, ориентированного на работу с данными, сложность заключается в написании эффективного и поддерживаемого кода без ущерба для эффективности доступа к данным, хранения и масштабируемости. Если данные имеют реляционную структуру, доступ к данным, хранение и масштабируемость будут весьма эффективными, однако написание эффективного и поддерживаемого кода становится более сложным. Если данные имеют структуру объекта, компромиссы приобретают обратный характер: написание эффективного и поддерживаемого кода наносит ущерб эффективности доступа к данным, хранения и масштабируемости. Даже если для этих компромиссов будут найдены правильные решения, при перемещении данных из одной формы в другую возникают новые трудности. Модель EDM решает эти трудности путем описания структуры данных на основе сущностей и связей, которые являются независимыми от схем хранения. В результате форма хранения данных уже не имеет отношения к проектированию приложений и разработке. Поскольку сущности и связи описывают структуру данных так, как она используется в приложении (а не ее форму хранения), они могут эволюционировать по мере эволюции приложения.

conceptual model — это специфическое представление структуры данных в виде сущностей и связей, которое обычно определяется на доменном языке DSL, реализующем основные понятия модели EDM. Примером такого языка для конкретной предметной области является язык определения концептуальной схемы (CSDL). Сущности и связи, описанные в концептуальной модели, можно представить в виде абстракций объектов и ассоциаций в приложении. Это позволяет разработчикам сфокусировать внимание на концептуальной модели, не думая о схеме хранения, и писать эффективный и поддерживаемый код. Одновременно разработчики схем хранения могут сфокусировать внимание на эффективности доступа к данным, хранения и масштабируемости.

В этом разделе

В подразделах этого раздела описываются основные понятия модели EDM. Любой специфический язык домена (DSL), реализующий модель EDM, должен включать основные понятия, описанные в данном разделе. Обратите внимание, что ADO.NET Entity Framework использует CSDL для определения концептуальных моделей. Для получения дополнительной информации см. CSDL Specification.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Luxury Car Rental in Miami | Reserve a Premium Vehicle with RealCar