Нет возможности добавить файл EDMX в проект в решении MVC

Я создал приложение MVC. Теперь я хотел бы добавить в решение новый проект библиотеки классов, а затем добавить в этот проект файл EDMX.

Раньше это было легко. Но теперь мне приходится выбирать между .NET Core и .NET Standard. Но, похоже, не имеет значения, что я выберу, потому что, если я создам библиотеку классов с любой из этих платформ, Visual Studio не предоставит возможности добавить к ним файл EDMX! И я не вижу возможности добавить стандартную библиотеку классов .NET Frameworks.

Так в чем секрет добавления нового проекта в мое решение MVC, а затем добавления файла EDMX в этот проект?

Примечание. У меня есть возможность добавить файл EDMX непосредственно в проект MVC. Но я бы предпочел разместить его в отдельном проекте, что я уже делал раньше.

Какую версию MVC вы используете? Это MVC Core или asp.net MVC 6? Если это веб-приложение ASP.NET Core, какую платформу вы используете Full .NET Framework или Core? И что вы имеете в виду, что не видите возможности добавить библиотеку классов .NET Framework? в шаблоне «Добавить новый проект» > «Рабочий стол Windows» > «Библиотека классов» (.NET Framework) вам не хватает?

hujtomi 24.02.2019 00:08

@TamásHuj Я только что зашел в Visual Studio и выбрал новое решение MVC. Похоже, он построил проект для обычного полного приложения .NET. Есть ли сейчас несколько способов создания приложений MVC?

Jonathan Wood 24.02.2019 01:01

Да, теперь есть 2 разных MVC-фреймворка, старый ASP.NET MVC и новый ASP.NET Core MVC. en.wikipedia.org/wiki/ASP.NET_MVC первый использует полную .NET Framework, а второй реализован в .NET Core и является кросс-платформенным.

hujtomi 24.02.2019 12:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
3
1 158
4

Ответы 4

Файл EDMX устарел в EF Core, и я полагаю, что он также был удален из основных проектов .net. Если вам нужно это сделать, вам может потребоваться добавить его в обычный проект .net 4.5 и скопировать файлы, но это не имеет смысла при использовании его с ядром .net или стандартом .net.

В любом случае вам следует использовать Code First, так как он чище и проще в использовании.

Если у вас уже есть база данных, вы можете обратиться к этой ссылке, она может помочь вам создать классы из базы данных.

https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db

Я просто хочу использовать Entity Framework. Как строятся модели, если не в файле EDMX?

Jonathan Wood 23.02.2019 22:27

Файл EDMX — это всего лишь один из старых способов использования EF. Рекомендуемый способ — использовать Code First. Здесь вы определяете класс Context и классы сущностей и используете что-то под названием Migration для создания своей базы данных, и всякий раз, когда вам нужно обновить базу данных, вы просто редактируете классы сущностей, которые сопоставляются с таблицами, и создаете новую миграцию, которая будет записывать только изменения и применять их через базу данных. Перейдите по ссылке, которой я поделился, чтобы узнать больше

Haitham Shaddad 23.02.2019 22:29

Я почти уверен, что вы все еще можете использовать Entity Framework без предварительного использования кода.

Jonathan Wood 23.02.2019 22:31

Вы можете сделать это, скопировав файлы из стандартного проекта .net 4.5, но в этом случае это не будет основной проект .net, и лучше использовать обычный полный проект .net, и вы будете использовать то, что устарело.

Haitham Shaddad 23.02.2019 22:34

Необходимость копировать файлы из проекта другого типа не поддерживает что-либо. Раньше это поддерживали. Теперь я слышу, что это не так. Я что-то упускаю.

Jonathan Wood 03.03.2019 18:52

Судя по вашему описанию, вы используете старую инфраструктуру ASP.NET MVC, а не новую Core, и в этом случае вы используете полную инфраструктуру .NET. Итак, когда вы создаете новый проект библиотеки классов, вы должны делать это с полной .NET Framework, поскольку .NET Core и .NET Standard не поддерживают EDMX. Если вы выбрали этот вариант, вы можете добавить к нему свою модель Entity Data ADO.NET:

Но я думаю, что вы можете добавить проект Core в решение, в котором уже есть проект Standard. Поэтому я не уверен, почему важно, что использует мой существующий проект.

Jonathan Wood 03.03.2019 18:54

Standard совместим с Core и полной .NET Framework. Это означает, что вы можете добавить The Standard в существующий проект Core или в существующий полноценный проект .NET Framework. Но, как они упоминают в других комментариях, Core и Standard не поддерживают EDMX, поэтому, если вы хотите использовать его, вам понадобится полная .NET Framework, это то, что я пытался объяснить, что вам нужно добавить Библиотека классов с полной версией .NET Framework.

hujtomi 03.03.2019 21:50

По крайней мере, для EF v6, если вы используете EF Migrations, каждый («состояние»/«цель») моментальный снимок базы данных (хранящийся в таблице базы данных истории миграции и файле миграции) представляет собой файл EDMX, ожидающий декодирования, сохранения в файл, а затем загружается в VS (Visual Studio). ;)

Это немного подробно (или, по крайней мере, сложно), но «System.Data.Entity.Migrations.Edm.ModelCompressor» может дать подсказку.

По сути, вы можете извлечь EDMX из одной/соответствующей миграции. Но я согласен с тем, что для реализации следует использовать подход Code-First, EDMX в наши дни — это только помощь в разработке.

Довольно расплывчато, что вы говорите здесь. Если вы предполагаете, что EDMX можно построить из информации в таблице миграции, вы ошибаетесь.

Gert Arnold 04.03.2019 16:17

Боюсь, я прав — по крайней мере, до EFv6 нужно просто знать, как это сделать; вот подсказка - см. «System.Data.Entity.Migrations.Edm.ModelCompressor».

DennisVM-D2i 06.03.2019 16:05

Мы здесь не устраиваем квесты. Ваш ответ должен быть четким, а не туманным намеком. Непонятно, как это помогает OP просто добавить EDMX в свой проект, находясь в Visual Studio.

Gert Arnold 06.03.2019 17:36

Я пытался указать, что EDMX уже может быть доступен «под капотом» — он идеально подходит для выбора и дальнейшего развития в таблице истории миграций, но я не хотел перегружать эту тему тем, что, возможно, менее прямолинейно. ответ/решение.

DennisVM-D2i 07.03.2019 19:49

@Jonathan: Файл EDMX - это старый способ ведения дел. EDMX — это не что иное, как шаблон T4, который облегчает создание edmx.

С .Net Core лучший способ: 1. Создайте проект основной библиотеки .net. Добавить пакет nuget entityframeworkcore из здесь 2. Используйте эту ссылку, чтобы создать свою модель из БД

Концепция EDMX больше не поддерживается.

Надеюсь это поможет.

Вы хотите сказать, что там, где раньше была встроена поддержка Entity Framework, теперь мне нужно скачивать пакеты? Почему это движется назад?

Jonathan Wood 03.03.2019 18:51

Другие вопросы по теме