TLDR總結我在與ASP.net MVC的InsertOnSubmit()函數中的幾個問題ASP.net MVC LINQ到SQL插入問題
。如何在沒有運行到關鍵約束的情況下構建新的對象並將其插入到數據庫中?
步驟來重現
我已經先行一步,創造了我一直有3或那麼大的問題一個簡單的演示,也許有人可以幫助我在這裏。
- 創建一個新的ASP.net MVC 2項目。
- 創建兩個表格 - 具有一對多關係的實驗和結果(如下所示)。
- 在主控制器內創建一個名爲「RunExperiment」的新操作。
- 創建一個基本的linq-to-sql數據上下文。
- 讓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模式,但我得到這些錯誤。
謝謝!
是的;那是錯誤的。非常感謝! – 2011-06-07 02:58:30
+1這很可能是問題的原因。 – 2011-06-07 03:13:15