Я создал приложение MVC. Теперь я хотел бы добавить в решение новый проект библиотеки классов, а затем добавить в этот проект файл EDMX.
Раньше это было легко. Но теперь мне приходится выбирать между .NET Core и .NET Standard. Но, похоже, не имеет значения, что я выберу, потому что, если я создам библиотеку классов с любой из этих платформ, Visual Studio не предоставит возможности добавить к ним файл EDMX! И я не вижу возможности добавить стандартную библиотеку классов .NET Frameworks.
Так в чем секрет добавления нового проекта в мое решение MVC, а затем добавления файла EDMX в этот проект?
Примечание. У меня есть возможность добавить файл EDMX непосредственно в проект MVC. Но я бы предпочел разместить его в отдельном проекте, что я уже делал раньше.
@TamásHuj Я только что зашел в Visual Studio и выбрал новое решение MVC. Похоже, он построил проект для обычного полного приложения .NET. Есть ли сейчас несколько способов создания приложений MVC?
Да, теперь есть 2 разных MVC-фреймворка, старый ASP.NET MVC и новый ASP.NET Core MVC. en.wikipedia.org/wiki/ASP.NET_MVC первый использует полную .NET Framework, а второй реализован в .NET Core и является кросс-платформенным.





Файл 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?
Файл EDMX — это всего лишь один из старых способов использования EF. Рекомендуемый способ — использовать Code First. Здесь вы определяете класс Context и классы сущностей и используете что-то под названием Migration для создания своей базы данных, и всякий раз, когда вам нужно обновить базу данных, вы просто редактируете классы сущностей, которые сопоставляются с таблицами, и создаете новую миграцию, которая будет записывать только изменения и применять их через базу данных. Перейдите по ссылке, которой я поделился, чтобы узнать больше
Я почти уверен, что вы все еще можете использовать Entity Framework без предварительного использования кода.
Вы можете сделать это, скопировав файлы из стандартного проекта .net 4.5, но в этом случае это не будет основной проект .net, и лучше использовать обычный полный проект .net, и вы будете использовать то, что устарело.
Необходимость копировать файлы из проекта другого типа не поддерживает что-либо. Раньше это поддерживали. Теперь я слышу, что это не так. Я что-то упускаю.
Судя по вашему описанию, вы используете старую инфраструктуру ASP.NET MVC, а не новую Core, и в этом случае вы используете полную инфраструктуру .NET. Итак, когда вы создаете новый проект библиотеки классов, вы должны делать это с полной .NET Framework, поскольку .NET Core и .NET Standard не поддерживают EDMX. Если вы выбрали этот вариант, вы можете добавить к нему свою модель Entity Data ADO.NET:
Но я думаю, что вы можете добавить проект Core в решение, в котором уже есть проект Standard. Поэтому я не уверен, почему важно, что использует мой существующий проект.
Standard совместим с Core и полной .NET Framework. Это означает, что вы можете добавить The Standard в существующий проект Core или в существующий полноценный проект .NET Framework. Но, как они упоминают в других комментариях, Core и Standard не поддерживают EDMX, поэтому, если вы хотите использовать его, вам понадобится полная .NET Framework, это то, что я пытался объяснить, что вам нужно добавить Библиотека классов с полной версией .NET Framework.
По крайней мере, для EF v6, если вы используете EF Migrations, каждый («состояние»/«цель») моментальный снимок базы данных (хранящийся в таблице базы данных истории миграции и файле миграции) представляет собой файл EDMX, ожидающий декодирования, сохранения в файл, а затем загружается в VS (Visual Studio). ;)
Это немного подробно (или, по крайней мере, сложно), но «System.Data.Entity.Migrations.Edm.ModelCompressor» может дать подсказку.
По сути, вы можете извлечь EDMX из одной/соответствующей миграции. Но я согласен с тем, что для реализации следует использовать подход Code-First, EDMX в наши дни — это только помощь в разработке.
Довольно расплывчато, что вы говорите здесь. Если вы предполагаете, что EDMX можно построить из информации в таблице миграции, вы ошибаетесь.
Боюсь, я прав — по крайней мере, до EFv6 нужно просто знать, как это сделать; вот подсказка - см. «System.Data.Entity.Migrations.Edm.ModelCompressor».
Мы здесь не устраиваем квесты. Ваш ответ должен быть четким, а не туманным намеком. Непонятно, как это помогает OP просто добавить EDMX в свой проект, находясь в Visual Studio.
Я пытался указать, что EDMX уже может быть доступен «под капотом» — он идеально подходит для выбора и дальнейшего развития в таблице истории миграций, но я не хотел перегружать эту тему тем, что, возможно, менее прямолинейно. ответ/решение.
@Jonathan: Файл EDMX - это старый способ ведения дел. EDMX — это не что иное, как шаблон T4, который облегчает создание edmx.
С .Net Core лучший способ: 1. Создайте проект основной библиотеки .net. Добавить пакет nuget entityframeworkcore из здесь 2. Используйте эту ссылку, чтобы создать свою модель из БД
Концепция EDMX больше не поддерживается.
Надеюсь это поможет.
Вы хотите сказать, что там, где раньше была встроена поддержка Entity Framework, теперь мне нужно скачивать пакеты? Почему это движется назад?
Какую версию MVC вы используете? Это MVC Core или asp.net MVC 6? Если это веб-приложение ASP.NET Core, какую платформу вы используете Full .NET Framework или Core? И что вы имеете в виду, что не видите возможности добавить библиотеку классов .NET Framework? в шаблоне «Добавить новый проект» > «Рабочий стол Windows» > «Библиотека классов» (.NET Framework) вам не хватает?