c# – 获取或附加实体
我有以下方法:
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; } 它按预期工作..有时候.
尽管我觉得这几乎是我试图避免在变换跟踪器中寻找实体. 任何帮助,将不胜感激 :-) 解决方法
仔细检查您附加的实体的导航属性:类别可能具有Books属性,其他书籍具有其他类别. EF将遍历整个图表并附加它可以达到的每个实体,从而产生上述问题.尝试消隐一些您不需要处理的导航属性.
我打赌你在保存有一个或多个共同类别的书籍清单时遇到这个例外. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |