У меня есть MVC3 View, который отправляет набор входных значений через Ajax на мой контроллер. Мой контроллер затем создает новый объект FieldTripRoute в моем контексте и пытается вставить его в базу данных.
Я просто не могу понять, что происходит. Я трижды проверил мою конструкторскую схему и мою схему БД, и они отлично совпадают. Таким образом, это не может быть обычной проблемой столбца, не существующего или обнуляемого в одной области, но не в другой. Тем не менее, я получаю исключение «Строка не найдена или изменена» каждый раз, когда я пытаюсь отправить изменения.
Трассировка стека для исключения выглядит следующим образом:
at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
at System.Data.Linq.DataContext.SubmitChanges()
at ManageMAT.Controllers.FieldTripController.RouteAdd(Int32 id, FormCollection collection)
Это код, который вызывается для добавления нового объекта Route из контроллера:
[HttpPost]
public ActionResult RouteAdd(int id, FormCollection collection)
{
FieldTrip trip = context.FieldTrips.Single(ft => ft.ID == id);
if (trip == null) return Json(new { success = false, message = "Field trip not found." }); ;
try
{
FieldTripRoute tripRoute = new FieldTripRoute();
tripRoute.FieldTripID = trip.ID;
tripRoute.Date = DateTime.Parse(collection["Date"]);
tripRoute.ArrivalTime = DateTime.Parse(collection["ArrivalTime"] + " " + DateTime.Now.ToShortDateString());
tripRoute.DepartureTime = DateTime.Parse(collection["DepartureTime"] + " " + DateTime.Now.ToShortDateString());
tripRoute.Destination = collection["Destination"];
tripRoute.PickupLocation = collection["PickupLocation"];
tripRoute.RouteID = Convert.ToInt32(collection["RouteID"]);
context.FieldTripRoutes.InsertOnSubmit(tripRoute);
context.SubmitChanges();
return Json(new { success = true, message = "Success!" });
}
catch (Exception ex)
{
return Json(new { success = false, message = ex.Message });
}
}
А вот мои столбцы конструктора и таблицы БД:
Я также пытался просмотреть SQL, который он выводит, как в журналировании, доступном для объекта контекста, так и в SQL Profiler, но, похоже, он завершается сбоем еще до того, как он попадает на сервер базы данных.
Редактировать: Забыл добавить еще одну вещь, когда я первоначально создавал новый объект FieldTripRoute в начале действия Добавить, я заметил, что он не получает правильный идентификатор из серии идентификаторов базы данных. Возможно, это связано?
Я также попытался установить для параметра Проверка обновлений для каждого поля в конструкторе значение Никогда, просто чтобы посмотреть, происходило ли какое-то странное коллизионное столкновение, но я все еще получаю ту же ошибку.
Я действительно в растерянности из-за того, что может быть причиной этой проблемы. Любые идеи приветствуются.