MVC与实体框架保存问题

时间:2012-09-17 20:34:21

标签: asp.net-mvc entity-framework-4

我有一个用于注册人员进行培训的页面。当前页面上有三个下拉菜单,一个用于选择要注册的人,一个用于选择课程,另一个用于选择课程提供的课程。要求将页面修改为现在有四组课程和会话下拉菜单,以允许用户一次最多为一个人注册四个班级。我的问题出现在如何处理表单发布现在。如果用户尝试将某人添加到课程中,那么他们已经注册了Entity Framework模型绑定将捕获错误并将错误消息发送回表单。我现在不确定如何实现此绑定,因为有四个实例可以同时进行评估和保存。我是MVC和EF的新手,所以任何帮助/方向都会非常感激。

编辑:下面是一个原始控制器保存功能:

    var AddToCourse = new Session_Registrant()
{
    RegistrantID = RegistrantID,
    SessionID = Session1,
    RegistrantOrg = regOrg,
    RegistrantTitle = title,
    RegistedDate = DateTime.Now

};
//attempt to save
try
{
    if (ModelState.IsValid)
    {
        db.AddToSession_Registrant(AddToCourse);
        db.SaveChanges();
    }
}
catch (DataException error)
{
    if (error.InnerException != null)
    {
        if (error.InnerException.Message.Contains("UNIQUE KEY constraint"))
        {
            //adding custom error message to explain the failure
            ModelState.AddModelError("", "Error! Registrant has already been added to this course session.");
        }
    }
    else
    {
        ModelState.AddModelError("Error", error.Message);
    }
}

1 个答案:

答案 0 :(得分:1)

我想知道问题是否与函数的设计有关而不是实现。是否应根据注册人实体与课程/会话实体之间的一对多关系来定义问题。

我也认为使用异常作为设计的一部分是不好的做法,这是一个定义问题。你(你的代码)应该问这样的问题:

  • 这是注册学生吗
  • 此学生是否已在本课程中预订课程
  • 此学生是否已在其他课程中注册课程

换句话说,定义您的业务规则,实现它们,问题应该自行解决为SMOC(编码的小问题)。

我很抱歉,如果这个回复没有更直接的帮助,但我觉得这是错误的起点。祝你好运。