C# 实体框架4删除调用不工作
我试图使用EF从我的表中删除一条记录,但什么也没有发生。代码执行时没有错误,但记录只是停留在数据库中。我在其他地方有几乎相同的代码在工作C# 实体框架4删除调用不工作,c#,linq,entity-framework-4,C#,Linq,Entity Framework 4,我试图使用EF从我的表中删除一条记录,但什么也没有发生。代码执行时没有错误,但记录只是停留在数据库中。我在其他地方有几乎相同的代码在工作 using (var DB = new PTNWebConfigurationModel.PTNWebConfigurationEntities()) { var account = DB.Accounts.Where(a => a.LoginID =
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();
我一开始也没有使用块,只是实例化了实体对象,但这也不起作用 我喜欢这样的问题 我看到ORM没有执行命令(并且没有错误)的大多数情况是由于对基础数据表的更改,而这些更改没有在为该表生成的类中表示
您可以刷新模式/类模型,然后再试一次。我在过去发现的另一件事是,如果您先进行EF数据库建模,那么您可能已经创建了链接两个关联表的外键,但该键在关系中没有设置为delete cascade。这可能会导致EF有点困难。因此,请检查数据库中的任何FK。希望这能有所帮助。你没有一个没有完成的附带交易范围,对吗?你可以试试@Klaus的试用版:恐怕我们到处都有这种东西。我们是新手。你能描述一下你的意思吗?我们试图将所有事务包含在using块中,但这就是我们尝试和管理作用域所做的一切。我指的是,如果您有类似于
的东西在使用(var txScope=new TransactionScope())
而忘记调用txScope.Complete()
。这样的代码将每个方法调用包装在事务中的using
块中,如果不调用Complete
更改,则将回滚。我们没有任何TransactionScope块。我想知道我们是否需要它们。我刚刚读到EF和SqlServer在2008年之前出现了一个bug,其中自动打开和自动关闭连接部分无法正常工作。这是一个很好的提示,我会记住它。但对于这个特殊的案例,它不起作用。仍然被难住了。