C# 调用savechanges时出错

C# 调用savechanges时出错,c#,entity-framework,C#,Entity Framework,我有以下使用实体框架的代码: try { using (GameDatabaseEntities context = new GameDatabaseEntities()) { IQueryable<Game> games = context.Games.Where(a => a.isValidGame == false); foreach (Game item in games) { c

我有以下使用实体框架的代码:

try
{
    using (GameDatabaseEntities context = new GameDatabaseEntities())
    {
        IQueryable<Game> games = context.Games.Where(a => a.isValidGame == false);

        foreach (Game item in games)
        {
            context.Games.Remove(item);
        }

        context.SaveChanges();
    }
}
catch (Exception ex)
{
    ErrorHandler.ExceptionHandling("Error in `DeleteFalseFlagsDataAccess` method", ex);
}
试试看
{
使用(GameDatabaseEntities上下文=新GameDatabaseEntities())
{
IQueryable games=context.games.Where(a=>a.isValidGame==false);
foreach(游戏中的游戏项目)
{
context.Games.Remove(项目);
}
SaveChanges();
}
}
捕获(例外情况除外)
{
ErrorHandler.ExceptionHandling(“DeleteFalseFlagsDataAccess`方法中的错误”,例如);
}
我有时会出现以下错误:

更新条目时出错

StackTrace
位于System.Data.Entity.Internal.InternalContext.SaveChanges()
位于System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
在System.Data.Entity.DbContext.SaveChanges()中 在C:\Users\Media Depp\documents\visual studio 2017\Projects\Games\Game\Game中的Game.DataAccessLayer.DeleteFalseFlagsDataAccess()中 我不知道原因,我应该在
foreach
中调用
context.SaveChanges()
?谢谢你的帮助。我应该提到的是,我读过,根据第一个答案,没有区别,我的代码也没有错。我感到困惑,因为我没有在网上找到答案。我还必须提到这一点,我在调用
SaveChanges
instance方法的行中得到了错误。

编辑:
我得到了以下内在信息:

Message=“执行超时已过期。操作完成前超时时间已过,或者服务器没有响应。\r\n语句已终止。”


编辑2:

我必须提到,我是从另一个线程调用这个。但正如您所见,我正在新线程中创建上下文,我认为这无关紧要。

您能否使用此代码而不是context.Games.Remove(item)


我假设此异常至少有一个
。InnerException
,它可能更详细地解释了实际的具体错误是什么……。我同意您的看法,但不幸的是,我使用的是可执行文件,它有一个内置的错误处理程序,可以对错误进行序列化,它不支持内部异常。我正在尝试在visual studio中调试.exe文件。我认为您需要处理
游戏
集合的副本,因为您在循环时正在修改游戏。尝试
var games=context.games.Where(a=>a.isValidGame==false).ToList()显然与foreach循环没有任何关系。我想还有另一个关于你的数据的原因导致了这个错误。然而;我还建议编写查询来删除这些项,并完全保留foreach循环。不管怎样,我觉得你的问题不在共享代码中。@marc_s我在苦苦挣扎之后终于找到了这个内部异常:Message=“执行超时已过期。操作完成前超时时间已过,或者服务器没有响应。\r\n语句已终止。”否,因为我必须从游戏列表中删除,不是从上下文来看的
context.DeleteObject(item);