Я пытаюсь научить себя LINQ to SQL и решил сделать небольшой проект MVC.NET, чтобы мои ноги промокли. Проблема в том, что я очень рано упал со следующей ошибкой.
Я делаю приложение для гольфа, поэтому я настроил базу данных и сделал свои уроки по dbml. База данных имеет таблицу course
и таблицу hole
. Таблица hole
ссылается на courseId
по его первичному ключу и имеет ограничение для внешнего ключа. Так что все довольно стандартно.
У меня есть действие MVC на моем контроллере, которое позволяет мне редактировать информацию о курсе (имя, информация о дыре, например, индекс пар и ход и т. Д.)
Когда я сохраняю файл после редактирования, я получаю следующую ошибку.
" Была предпринята попытка удалить связь между курсом и лункой. Однако один из внешних ключей отношения (Hole.CourseId) не может быть установлен равным нулю . «
Я отладил это и не вижу никаких проблем. Есть ли что-то, что мне нужно сделать в базе данных, чтобы позволить мне редактировать таблицы с ограничениями внешнего ключа?
Вот код действия:
[HttpPost]
[ValidateInput(true)]
public ActionResult Edit(int id, FormCollection collection)
{
var courseViewModel = new CourseViewModel { Course = _repository.GetCourse(id) };
if (courseViewModel.Course == null)
{
return View("NotFound", string.Format("Course {0} Not Found", id));
}
try
{
UpdateModel(courseViewModel);
_repository.SubmitChanges();
return RedirectToAction("Index", "Course");
}
catch (Exception ex)
{
ModelState.AddRuleViolations(courseViewModel.Course.GetRuleViolations());
ModelState.AddModelError("", ex.Message);
return View(courseViewModel);
}
}
Где _repository выглядит так:
namespace Web.Repository
{
public class MyRepository
{
private MyDataContext db = new MyDataContext();
public void SubmitChanges()
{
db.SubmitChanges();
}
public Course GetCourse(int id)
{
return db.Courses.SingleOrDefault(i => i.CourseId == id);
}
}
}