0

我有一个用于注册培训人员的页面。当前页面上有三个下拉菜单,一个选择要注册的人,一个选择课程,一个选择提供课程的会话。要求将页面修改为现在具有四组课程和会话下拉菜单,以允许用户一次最多为一个人注册四个课程。我的问题出现在如何处理现在的表单发布上。之前,如果用户尝试将人员添加到他们已经注册实体框架模型绑定的课程,则会捕获错误并将错误消息发送回表单。我不确定如何实现这个绑定,因为有四个实例要同时评估和保存。我是 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);
    }
}
4

1 回答 1

1

我想知道问题是否在于功能的设计而不是实现。问题是否应该根据注册实体和课程/会话实体之间的一对多关系来定义。

我也认为在设计中使用异常是不好的做法,这是一个定义问题。您(您的代码)是否应该提出以下问题:

  • 这是注册学生吗
  • 此学生是否已在此会话中预订了课程
  • 该学生是否已在其他课程中注册课程

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

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

于 2012-09-18T11:52:55.017 回答