2013-03-04 7 views
7

У меня есть что-то вроде этого:Есть ли способ удалить механизм отслеживания изменений для одного объекта?

var dbTransactions = context.Transactions.Where(t => t.Date >= yesterday).Select(t => t).ToList(); 

Теперь я хотел бы, чтобы удалить объекты из dbTransactions списка, но не из фактической базы данных. Позже я звоню context.SaveChanges(), и если бы я сделал это, он бы удалил строки из моего db. Как отключить отслеживание изменений для dbTransactions?

+1

http://stackoverflow.com/questions/4168073/entity-framework-code-first- no-detach-method-on-dbcontext – SLaks

+1

Удаление объектов из списка «» не будет отмечать их как удаленные в вашем 'DbContext' –

ответ

9

Я думаю, что вы можете использовать AsNoTracking и для сделок с помощью Detach

Youcontext.YourEntities.AsNoTracking().Where); 

или использовать

Youcontext.Transactions.Detach(obj); 
+0

. Есть ли что-то вроде атрибута' [NoTracking] 'для объектов POCO? Как мы должны помечать объекты POCO (в нашем случае объекты поиска) как no-tracking ?! – orad

0

Удалить эти объекты из контекста с использованием Detach():

context.Transactions.Detach(obj); 

так ясно вам придется восстановить этот список - но потом просто итерацию через него и отделить их.

Смежные вопросы