尝试修改我的模型时出现异常

时间:2013-11-06 22:05:50

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

当我尝试添加我的模型时,会显示一些注释Exception

这是我的CompetitionRepository,我实现了方法

 public void AddCompetition(Competition competition)
   {
       if (competition.ID == 0)
            _context.Competitions.Add(competition);
       else
            _context.Entry(competition).State = EntityState.Modified;

       _context.SaveChanges();

   }

控制器

[HttpPost]   
    public ActionResult AdminPCreate(string compName, int quantity, DateTime starTime)
    {
        if(ModelState.IsValid)
            _dataManager.Competitions.AddCompetition(
                new Competition
                {
                    ID = 1,
                    Quantity = quantity,
                    StartTime = starTime,
                });
        return View("Competitions",GetCompetitions());
    }

和cshtml页面,也许我做错了什么

 @using (Html.BeginForm("AdminPCreate", "Home"))
{

    @Html.TextBox("compName",null ,new {@placeholder = "Competition Name"})
    @Html.TextBox("quantity", null, new {@placeholder = "Amount players"})
    @Html.TextBox("starTime", null, new {@placeholder = "Enter beginnig of the match like dd\\mm\\yyyy"})

    <input type="submit" value="Create" class="btn btn-success"/>

我也试过在该网站上使用了很多解决方案,例如that 因为当我尝试使用它时(ObjectStateManager.GetObjectStateEntry(entity)` 因为我的字段方法的类型与对象

不同
public void AddCompetition(Competition competition)

1 个答案:

答案 0 :(得分:0)

在控制器的方法AdminPCreate中,您有new Competition { ID = 1, [..] }

ID的{​​{1}}值使您的存储库认为它是现有项,因此实体框架会尝试更新1记录Competition。这不存在,因此您的数据库返回“0行受影响”并抛出错误。

我怀疑当您在控制器中将ID = 1设置为ID而不是0时,它会起作用。