Сводка TLDR
У меня возникли некоторые проблемы с функцией InsertOnSubmit () в ASP.net MVC.Как вы строите и вставляете новые объекты в базу данных, не сталкиваясь с ключевыми ограничениями?
Шаги для воспроизведения
Я пошел вперед и создал простую демонстрацию3 или около того серьезных проблем, с которыми я столкнулся, и, возможно, кто-то может помочь мне здесь.
- Создайте новый проект ASP.net MVC 2.
- Создайте две таблицы.Эксперименты и результаты с отношением «один ко многим» (показано ниже).
- Создайте новое действие в контроллере «Home» под названием «RunExperiment».
- Создайте базовые данные linq-to-sqlcontext.
- Пусть RunExperiment сгенерирует новый эксперимент и результаты и вставит их в базу данных с помощью нового контекста данных.
Этот процесс быстро разваливается, так как есть какое-то волшебство, которое необходимочтобы предотвратить дублирование первичных ключей и , чтобы гарантировать, что зависимости остаются неизменными.
Теперь взглянем на мой пример функции "RunExperiment":
public ActionResult RunExperiment(string Title, string Scientist)
{
RepositoryDataContext RDC = new RepositoryDataContext();
// Generate the experiment
Experiment thisExperiment = new Experiment();
thisExperiment.experimentTitle = Title;
thisExperiment.experimentScientist = Scientist;
// Perform some work.
System.Threading.Thread.Sleep(500);
// Attempt to insert the experiment.
// Works once, fails subsequently due to duplicate primary key.
RDC.Experiments.InsertOnSubmit(thisExperiment);
RDC.SubmitChanges();
for (int i = 0; i < 5; i++)
{
Result thisResult = new Result();
thisResult.resultDate = DateTime.Now;
thisResult.resultTemp = i;
thisResult.Experiment = thisExperiment;
RDC.Results.InsertOnSubmit(thisResult);
RDC.SubmitChanges();
}
return View("Index");
}
Есть мысли?Я знаю, что это основные вещи, но я пытаюсь отойти от простого копирования паттерна Nerd Dinner, но я получаю эти ошибки.
Спасибо!