Я использую такой код (описан в http://blogs.msdn.com/b/alexj/archive/2009/03/27/tip-9-deleting-an-object-without-retrieving-it.aspx) для удаления объекта:
Category stub = new Category { ID = 4 }; ctx.AttachTo("Categories", stub); ctx.DeleteObject(stub); ctx.SaveChanges();
Однако, это не работает, когда объект с ID = 4 уже загружен в контекст какой-либо предыдущей операцией. Есть ли способ проверить и выполнить присоединение, только если такого объекта нет в контексте?
Попробуйте использовать метод ObjectStateManager.TryGetObjectStateEntry , который возвращает false, если для объекта нет записи о состоянии.
false
Вы можете получить ObjectStateManager из ObjectContext.ObjectStateManagerимущество.
ObjectStateManager
ObjectContext.ObjectStateManager