#c# #entity-framework #entity-framework-core
#c# #entity-framework #entity-framework-core
Вопрос:
У меня есть проект на .NET 4.8 и EF 6.4.4. Мы постепенно переходим.Net Core но могу ли я во время процесса создать класс контекста данных .NET Core, EF Core и указать оба на одни и те же объекты?
Комментарии:
1. Да, но я бы рекомендовал вам разместить сущности (модели) в общем проекте с целевыми фреймворками netstandard2.0 и net4.8. Убедитесь, что в ваших моделях нет специфичного для EF кода, они должны быть чисто POCO-типами (обычные старые объекты clr). Все сопоставления должны выполняться с использованием fluent mappings в ваших реализациях EF.
2. похоже, что NET Core не может работать с netstandard2.0
3. Какую версию .net core вы используете?
4. я начинаю с 4.8 и EF 6.4.4, я ищу любую комбинацию Core и Standard для повторного использования существующих объектов
5. У меня есть проект .NET Core 3.1, который ссылается на проект, предназначенный для .NET Standard 2.0. Здесь нет проблем, поэтому я не уверен, что вы имеете в виду, что это не может работать.
Ответ №1:
Да, вы можете. Обратитесь к схеме ниже.
- Преобразовать все библиотеки в
.netstandard2.0
- Начните с перемещения всех моделей в отдельный проект.
- Затем создайте новый проект, в котором вы собираетесь перенести свои классы dal в EF Core (я бы рекомендовал сохранить одно и то же пространство
Dal.csproj
имен,Dal.Core.csproj
чтобы это не затронуло потребителей). - Переместите свой первый класс dal из
Dal.csproj
вDal.Core.csproj
. Теперь этап фиксация — это очень важный шаг, иначе вы потеряете историю git для этого класса. Теперь вы можете внести все необходимые изменения, чтобы заставить его работать с новымиDbContext
- Как только вы завершите все миграции, переместите все
Dal.Core.csproj
обратно вDal.csproj
и удалитеDal.Core.csproj
project. Не забудьте внести изменения перед фиксацией, чтобы git распознал перемещенные файлы как переименование, а не удаление добавление.
Совет: убедитесь, что вы знаете о декартовой проблеме взрыва в EF Core 3
Примечание: если вы работаете в режиме Model First с файлом EDMX, который не поддерживается в EF Core, вы не можете преобразовать проект с помощью EDMX в netstandard2.0
и должны сохранить его как net48
.
Комментарии:
1. И с EF 5 вы можете выбрать
Include
, генерирует ли «отдельные» или «разделенные» запросы. docs.microsoft.com/en-us/ef/core/querying/single-split-queries