1

尝试向数据库添加一些项目时,出现此错误:

用户代码未处理 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 实体数据模型。

谢谢

4

3 回答 3

1

我不确定是否有使用 Entity Framework 的“更简洁”的方法来执行此操作,但如果您使用的是 SQL Server,那么我通常会使用SQL Server Profiler来读取针对服务器执行的查询。如果您使用的是不同的数据库,那么可能会有一个等价的数据库——无论如何,如果您让我们知道,它可能会有所帮助。

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

于 2009-05-01T16:36:53.243 回答
0

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

于 2009-05-01T17:29:13.193 回答
0

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

查看错误报告。

顺便说一句,我发现以下代码行可以解决该问题:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 
于 2009-08-19T20:23:17.587 回答