2011-01-07 6 views
0

Я пытаюсь удалить запись из своей таблицы с помощью EF, и ничего не происходит. Код выполняется без ошибок, но запись просто хранится в БД. У меня почти идентичный код в другом месте, который работает.Entity Framework 4 Удалить вызов не работает

   using (var DB = new PTNWebConfigurationModel.PTNWebConfigurationEntities()) 
       { 
        var account = DB.Accounts.Where(a => a.LoginID == loginID).FirstOrDefault(); 


         //Load existing session for the Account, otherwise create a new one. 
         if (!LoadExistingSession(ip, DB, account)) 
         { 
          CreateNewSession(ip, DB, account); 
         } 
         AccountsSession sessionsToDelete = DB.AccountsSessions.Where(a => a.RemoteIP == ip && a.AccountID == 1).FirstOrDefault(); 
         if (sessionsToDelete != null) 
         { 
          DB.DeleteObject(sessionsToDelete); 
          DB.SaveChanges(); 
         } 
       } 

Я также пробовал с этими вариантами:

DB.DeleteObject(sessionsToDelete); 
DB.SaveChanges(System.Data.Objects.SaveOptions.DetectChangesBeforeSave); 
DB.AcceptAllChanges(); 

Я также начал с не использованием блока и просто и экземпляр объекта сущностей, но это не сработало.

+1

У вас нет прилагающегося TransactionScope, который вы не комплектуете, не так ли? –

+0

Вы можете попробовать пробную версию http://efprof.com/ – TrueWill

+0

@Klaus: Я боюсь, что у нас есть такие вещи повсюду. Мы новичок в этом. Можете ли вы описать, что вы имеете в виду? Мы пытаемся заключить всю транзакцию в использовании блоков, но это все, что мы делаем, чтобы попытаться управлять областью. – fr0man

ответ

1

Мне нравятся такие проблемы.

В большинстве случаев, когда я видел, что ORM не выполняет команду (и без ошибок), это связано с изменениями в базовых таблицах данных, которые не представлены в сгенерированных классах для этой таблицы.

Возможно, вы обновите свою модель схемы/класса и повторите попытку.

+0

Хороший совет, и я буду помнить об этом. Но это не сработало для этого конкретного случая. Все еще в тупике. – fr0man

0

Выполнение с Chris' answer Другая вещь, которую я нашел в прошлом, - это то, что вы сначала создаете базу данных EF, тогда вы можете создать внешние ключи, связывающие две связанные таблицы, но ключ не был установлен как удаление каскада в отношениях. Это может привести к тому, что EF будет немного сложнее. Поэтому проверьте все FK в своем db. Надеюсь, это поможет.

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