C# 带有lambda和MySQL的Simple EntityFramework引发异常?
我正在使用EntityFramework 4从MySQL数据库中删除一些记录。这是我的代码:C# 带有lambda和MySQL的Simple EntityFramework引发异常?,c#,.net,mysql,entity-framework,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))
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服务器版本对应的手册,以了解使用near的正确语法(在第1行选择\n games\u designer\u binder.gameId、games\u designer\u binder
为什么?我需要什么来解决这个问题
编辑:
这很好:
context.games_designer_binder.Where(c=> c.designerId == 22 && c.gameId == 1276).FirstOrDefault();
我非常确定,在遍历集合时不能删除实体 试试这个:
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\u designer\u binder集合,以反映它实际上是model binder上的集合,因此它以s结尾,例如:games\u designer\u binderS,因为您可能会将其与集合和实体本身搞砸。我看到了其他关于EF与MySQL的关系不好的问题,但我不太了解他lp解决它。消息表明SELECT中有错误,所以请先尝试读取一些记录。@HenkHolterman你的意思是什么?我可以使用context.ExecuteStoreCommand运行存储过程,但使用上面的代码,我得到SELECT异常。SELECT很简单,即使我没有最新的MySQL服务器,也应该可以工作。Se my Edit1。异常在运行context.SaveChanges之前不会抛出。请转到第18页,好的,阅读第8页(链接已关闭,但现在可以使用)。很抱歉,我不确定我是否了解您试图告诉我的内容。请记住elavorate?这是关于您提出的另一个问题,在我向您发布该问题之前,该问题立即关闭。