ASP.NET MVC: как просмотреть запрос, выполненный SaveChanges (в модели данных сущности ADO.NET) - PullRequest
1 голос
/ 01 мая 2009

При попытке добавить несколько элементов в базу данных я получаю эту ошибку:

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.

Спасибо

Ответы [ 3 ]

1 голос
/ 01 мая 2009

Я не уверен, есть ли «аккуратный» способ сделать это с Entity Framework, но если вы используете SQL Server, тогда я бы обычно использовал SQL Server Profiler для чтения запросы выполняются к серверу. Если вы используете другую базу данных, это может быть эквивалентно - в любом случае, возможно, будет полезно, если вы сообщите нам.

Если вы используете MySQL> 5.0.37, у него есть новая функция профилирования запросов - она ​​должна показывать отправляемые запросы.

0 голосов
/ 20 августа 2009

Я только что столкнулся с той же проблемой при вставке данных с использованием Entity Framework и MySQL. Я догадываюсь, так как я использую double значения, что десятичный разделитель "," неправильно интерпретируется как разделитель полей. Я обновился до версии Connector 6.1.0, но все равно не повезло. Может быть, это происходит и в вашем случае.

Проверьте этот отчет об ошибке.

Кстати, я обнаружил, что следующая строка кода обходит проблему:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 
0 голосов
/ 01 мая 2009

SQL Server Profiler будет работать нормально, если вы используете SQL Server. В Entity Framework вы можете использовать метод ToTraceString .

...