当我尝试添加我的模型时,会显示一些注释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)
答案 0 :(得分:0)
在控制器的方法AdminPCreate
中,您有new Competition { ID = 1, [..] }
。
ID
的{{1}}值使您的存储库认为它是现有项,因此实体框架会尝试更新1
记录Competition
。这不存在,因此您的数据库返回“0行受影响”并抛出错误。
我怀疑当您在控制器中将ID = 1
设置为ID
而不是0
时,它会起作用。