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