Используя Entity Framework 6 и MySQL, я пытаюсь архивировать данные из рабочей таблицы базы данных в архивную базу данных. Я создал два DBContexts по одному для каждой базы данных. Каждая база данных имеет одинаковую схему.
Я могу переместить всю таблицу данных из рабочей базы данных в архивную базу данных, используя следующий код:
using (MyDBContext archiveContext =
MyDBContext.CreateEntitiesForSpecificDatabaseName("archive_db"))
using (MyDBContext prodContext =
MyDBContext.CreateEntitiesForSpecificDatabaseName("prod_db"))
{
if(prodContext.myTable.Any())
{
archiveContext.myTable.AddRange(prodContext.myTable.AsNoTracking());
archiveContext.SaveChanges();
}
}
Однако я не хочу архивировать всю таблицу, я хочу только архивировать данные старше определенной даты, поэтому я попробовал следующее:
using (MyDBContext archiveContext =
MyDBContext.CreateEntitiesForSpecificDatabaseName("archive_db"))
using (MyDBContext prodContext =
MyDBContext.CreateEntitiesForSpecificDatabaseName("prod_db"))
{
IQueryable<myTable> dataToArchive =
from mt in prodContext.myTable
where mt.date < DateTimeSixMonths
select mt;
archiveContext.myTable.AddRange(dataToArchive);
archiveContext.SaveChanges();
}
но я не могу обойти исключение, которое я получаю при запуске этого:
System.InvalidOperationException: «Объект сущности не может быть
ссылается на несколько экземпляров IEntityChangeTracker. '
Это происходит по этой строке:
archiveContext.myTable.AddRange(dataToArchive);
Возможно ли как-то удалить отслеживание из dataToArchive