Повторное использование объектов EF как для EF 6.x, так и для ядра EF

#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:

Да, вы можете. Обратитесь к схеме ниже.

  1. Преобразовать все библиотеки в .netstandard2.0
  2. Начните с перемещения всех моделей в отдельный проект.
  3. Затем создайте новый проект, в котором вы собираетесь перенести свои классы dal в EF Core (я бы рекомендовал сохранить одно и то же пространство Dal.csproj имен, Dal.Core.csproj чтобы это не затронуло потребителей).
  4. Переместите свой первый класс dal из Dal.csproj в Dal.Core.csproj . Теперь этап фиксация — это очень важный шаг, иначе вы потеряете историю git для этого класса. Теперь вы можете внести все необходимые изменения, чтобы заставить его работать с новыми DbContext
  5. Как только вы завершите все миграции, переместите все 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