LINQ to SQL: изменения DataContext не отражаются, если не вызывается SubmitChanges - PullRequest
0 голосов
/ 27 января 2012

У меня есть класс User и связанный с ним UserRequest, поэтому дизайнер VS создал для меня User.UserRequests.

Иногда я выполняю задачу по удалению неактивных пользовательских запросов следующим образом:

Dim requests = From req In db.UserRequests Where req.LastActivity < DateTime.Now.Subtract(New TimeSpan(0, 0, KeepRequestInterval)) Select req 


For Each req In requests 

    db.UserRequests.DeleteOnSubmit(req )
Next

Когда я получаю доступ к User.UserRequests, удаленные запросы все еще остаются, пока я не вызову db.SubmitChanges () после их удаления до доступа к User.UserRequests.

Есть ли способ принудительно удалить удаленные запросы из User.UserRequests без дополнительного вызова SubmitChanges ()?

Ответы [ 2 ]

3 голосов
/ 27 января 2012

Нет, это по замыслу.http://msdn.microsoft.com/en-us/library/bb399378.aspx

Независимо от того, сколько изменений вы вносите в свои объекты, изменения вносятся только в реплики в памяти.Вы не внесли никаких изменений в фактические данные в базе данных.Ваши изменения не будут переданы на сервер, пока вы явно не вызовете SubmitChanges для DataContext.

Только после Submitchanges будут удалены ваши удаления.

1 голос
/ 27 января 2012

Вы можете проверить каждую запись в User.UserRequests по результатам db.GetChangeSet ().GetChangeSet возвращает 3 коллекции (удаляет, вставляет, обновляет) того, что было изменено с момента последней отправки.

ChangeSet cs = db.GetChangeSet();

Более подробная информация здесь:

http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.getchangeset.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...