尝试向数据库添加一些项目时,我收到此错误:
UpdateException未被用户代码
处理 更新条目时发生错误。有关详细信息,请参阅InnerException。
InnerException包含:
{“列数与第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实体数据模型。
由于
答案 0 :(得分:1)
我不确定使用实体框架是否有“整洁”的方法,但如果您使用的是SQL Server,那么我通常会使用SQL Server Profiler来读取正在执行的查询服务器。如果您使用的是其他数据库,那么可能会有相同的数据库 - 无论如何,如果您告诉我们,它可能会有所帮助。
如果你正在使用MySQL&gt; 5.0.37它具有新的query profiler功能 - 这应该能够显示正在发送的查询。
答案 1 :(得分:0)
如果您使用SQL Server,SQL Server Profiler将正常工作。在实体框架中,您可以使用ToTraceString方法。
答案 2 :(得分:0)
我在使用Entity Framework和MySQL插入数据时遇到了同样的问题。我的预感是,因为我使用 double 值,小数分隔符“,”被误解为字段分隔符。我升级到Connector版本6.1.0,但仍然没有运气。也许这也是你的情况。
查看this错误报告。
BTW,我发现以下代码行解决了这个问题:
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");