Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架4删除调用不工作_C#_Linq_Entity Framework 4 - Fatal编程技术网

C# 实体框架4删除调用不工作

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 =

我试图使用EF从我的表中删除一条记录,但什么也没有发生。代码执行时没有错误,但记录只是停留在数据库中。我在其他地方有几乎相同的代码在工作

                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,其中自动打开和自动关闭连接部分无法正常工作。这是一个很好的提示,我会记住它。但对于这个特殊的案例,它不起作用。仍然被难住了。