使用lambda和MySQL的简单EntityFramework抛出异常?

时间:2013-01-11 18:32:18

标签: c# .net mysql entity-framework

我正在使用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。第1行)附近使用正确的语法

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

修改:

这很好用:

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

1 个答案:

答案 0 :(得分: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,因为您可以将其与集合和实体本身搞混。