我试图通过ASP.Net MVC 1.0中的NerdDinner示例章节,我遇到了一个错误.在我到达需要编辑晚餐的部分之前,所有东西都是笨拙的.我从项目的创建到现在一直跟着指导,直到这一点(至少我能说的最好).但是,当我在NerdDinnerDataContext对象上调用SubmitChanges方法时,我得到一个异常,说:
规则违规会阻止保存
我没有注意到我的代码与最终项目中的代码之间存在任何差异(除了一些我还没有添加的其他功能,显然).基本上,我不知道如何在此时对此错误进行故障排除.我试图在网上寻找一些答案,没有运气.
以下是我项目中的一些代码片段,但我不确定它们会有多好.
来自我的DinnerRepository类:
private NerdDinnerDataContext db = new NerdDinnerDataContext(); ... public void Save() { db.SubmitChanges(); }
来自DinnersController
[AcceptVerbs(HttpVerbs.Post)] public ActionResult Edit(int id, FormCollection formValues) { // Retrieve existing dinner Dinner dinner = dinnerRepository.GetDinner(id); // Update dinner with form posted values dinner.Title = Request.Form["Title"]; dinner.Description = Request.Form["Description"]; dinner.EventDate = DateTime.Parse(Request.Form["EventDate"]); dinner.Address = Request.Form["Address"]; dinner.Country = Request.Form["Country"]; dinner.ContactPhone = Request.Form["ContactPhone"]; // Persist changes back to database dinnerRepository.Save(); // Perform HTTP redirect to details page for the saved Dinner return RedirectToAction("Details", new { id = dinner.DinnerID }); }
这是我的第一个问题,所以如果不是那么好,我会道歉.
RuleViolations是NerdDinners的创建者Scott Hanselman决定封装业务逻辑的方式.
他将Linq To SQL类分开,并添加了一个名为GetRuleViolations()的函数,这是他添加所有业务规则的地方.看看那个方法,看看发生了什么.