1

我正在使用 EntityFramework 4 从 MySQL 数据库中删除一些记录。这是我的代码:

using (Entities context = new Entities())
                {
                    foreach (games_designer_binder binder in context.games_designer_binder.Where(c => c.gameId == inGameId))
                        context.games_designer_binder.DeleteObject(binder);

                    context.SaveChanges();
                    return true;
                }

这会引发以下异常:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 '(SELECT\n games_designer_binder.gameId, games_designer_binder. at line 1 附近使用正确的语法

为什么?我需要什么来解决这个问题?

编辑:

这很好用:

context.games_designer_binder.Where(c=> c.designerId == 22 && c.gameId == 1276).FirstOrDefault();
4

1 回答 1

0

我很确定在迭代集合时不能删除实体。

尝试这个 :

using (Entities context = new Entities())
    {
        var binders = context.games_designer_binder.Where(c => c.gameId == inGameId).ToList();

        foreach (var binder in binders)
            context.games_designer_binder.DeleteObject(binder);

        context.SaveChanges();
        return true;
    }

注意:我建议您更改 games_designer_binder 集合以反映它实际上是模型活页夹上的集合,因此它以 S 结尾,例如:games_designer_binderS,因为您可以将集合和实体本身弄乱。

于 2013-10-24T16:33:41.520 回答