2009-05-01 32 views
1

在尝试几个项目添加到我得到这个错误的数据库:ASP.NET MVC:如何查看由执行的SaveChanges(在ADO.NET实体数据模型)查询

UpdateException was unhandled by user code
An error occurred while updating the entries. See the InnerException for details.

的InnerException包含:

{"Column count doesn't match value count at row 1"}

我看不到任何错误的对象,我试图添加,所有需要的值被填充。
有没有任何方法查看导致问题的查询?

该方法的代码,如果需要的话:

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult LaadVerrichtingenIn() { 
     int[] intArray = Array.ConvertAll<String, int>(Request.Form["selectedObjects"].Split(','), new Converter<String, int>(Convert.ToInt32)); 
     List<Verrichting> gekozenVerrichtingen = new List<Verrichting>(); 

     foreach(int i in intArray){ 
      base._entities.AddToVerrichtingSet(((Dictionary<int, Verrichting>)Session["ingelezenVerrichtingen"])[i]); 
      gekozenVerrichtingen.Add(((Dictionary<int, Verrichting>)Session["ingelezenVerrichtingen"])[i]); 
     } 
     Session["ingelezenVerrichtingen"] = null; 
     base._entities.SaveChanges(); //Exception occurs here 

     return View("IngeladenVerrichtingen"); 
    } 

base._entities是ADO.NET实体数据模型。

感谢

回答

1

我不知道是否有一个“整洁”的方式与实体框架要做到这一点,但如果你使用SQL Server,那么我一般用SQL Server Profiler阅读是查询针对服务器执行。如果您使用的是不同的数据库,那么可能会有相同的数据库 - 无论如何,如果您告诉我们,它可能会有所帮助。

如果您使用MySQL> 5.0.37,它具有新的query profiler功能 - 这应该能够显示您正在发送的查询。

+0

感谢您的回答,但不幸的是我没有使用SQL Server。 我正在使用MySQL服务器。 我会寻找我如何访问那里的查询日志。 – 2009-05-01 18:12:13

+0

我已经更新了与mysql中的sql profiler链接的答案,虽然它看起来像你必须发出命令来启用你想要进行配置文件分析的命令,所以你可能必须让EF来做用手动查询。其他方法请参阅http://stackoverflow.com/questions/20263/is-there-a-profiler-equivalent-for-mysql。 – Whisk 2009-05-01 21:18:14

0

如果您使用的是SQL Server,SQL Server分析器将正常工作。在实体框架中,您可以使用ToTraceString方法。

0

我刚刚在使用实体框架和MySQL插入数据时遇到同样的问题。我的直觉是,因为我使用值,小数分隔符“,”被误解为字段分隔符。我升级到连接器版本6.1.0,但仍然没有运气。也许这也是你的情况。

检出this错误报告。

BTW,我发现下面的代码行工作解决该问题:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");