2011-01-07 59 views
0

我想从我的表中删除一个记录使用EF,并没有发生任何事情。代码执行时没有任何错误,但记录只是在DB中执行。我在其他地方有几乎相同的代码。实体框架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,你没有完成,对吧? – 2011-01-07 17:48:15

+0

你可以试试http://efprof.com/ – TrueWill 2011-01-07 17:55:02

回答

1

我喜欢这样的问题。

大部分时间,我看到一个ORM不执行一个命令(没有错误)是由于对该表生成的类中没有表示的底层数据表的更改。

您可能会刷新您的架构/类模型,然后重试。

0

Chris' answer开始我发现过去的另一件事是,如果您正在EF数据库第一次建模,那么您可能创建了链接两个关联表的外键,但该键尚未设置为删除级联在关系中。这可能会导致EF有点困难。所以检查你的数据库中的任何FKs。希望有所帮助。