У меня есть следующий метод:Получение или прикрепление объект
public bool RemoveBookCategories(IDictionary<Books, IList<C_Category>> books)
{
_context.Configuration.AutoDetectChangesEnabled = true;
foreach (var book in books.Keys)
{
foreach (var category in books[book])
{
if (!_context.ChangeTracker.Entries<Books>().Any(e => e.Entity.BookId == book.BookId))
_context.Books.Attach(book);
if (!_context.ChangeTracker.Entries<C_Category>().Any(e => e.Entity.Id == category.Id))
_context.C_Category.Attach(category);
book.C_Category.Remove(category);
}
}
if (_context.SaveChanges() > 0)
return true;
return false;
}
Он работает, как и ожидалось .. Иногда. Иногда я получаю сообщение об ошибке:.
{ "Прикрепление объекта типа„DataAccess.Plusbog.C_Category“не удался, так как другой объект того же типа, уже имеет то же значение первичного ключа Это может произойти при использовании метод «Прикрепить» или задание состояния объекта «Без изменений» или «Модифицировано», если любые объекты на графике имеют конфликтующие значения ключей. Это может быть связано с тем, что некоторые объекты являются новыми и еще не получили значения ключей базы данных. В этом случае используйте метод «Добавить» или «Добавленное» состояние объекта для отслеживания графика, а затем установите состояние «не измененных» объектов на «Без изменений» или «Модифицировано», если это необходимо. »}
Это даже несмотря на то, что я чувствую, что это в значительной степени то, что я пытаюсь избежать поиска сущности в changetracker. Я чувствую, что я перепробовал все решения я мог бы найти, но ничего не работает: -/
Любая помощь будет оценена :-)
Возможно, вы посмотрели мой ответ на [ASP.NET MVC - Прикрепление объекта типа «MODELNAME» не удалось, поскольку другой объект того же типа уже имеет такое же значение первичного ключа] (http://stackoverflow.com/вопросы/23201907/жерех-сетчатой MVC-прикрепление-ан-субъект-оф-типа-ModelName-неудавшегося потому-другой-лор/39557606 # 39557606). –