0

モデルにメモを追加しようとすると、例外が表示されます

ここにメソッドを実装する私のコンペティションリポジトリがあります

 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"/>

私はまた、そのサイトでここを含む多くのソリューションを 使用しようとしました.

public void AddCompetition(Competition competition)
4

1 に答える 1

0

AdminPCreateコントローラーのメソッドには、 new Competition { ID = 1, [..] }.

そのIDvalueof1により、リポジトリはそれが既存のアイテムであると見なされるため、Entity Framework はCompetitionレコード whereを更新しようとしID = 1ます。それは存在しないため、データベースは「0 行が影響を受けました」を返し、エラーがスローされます。

コントローラーの代わりにIDtoを設定すると、動作すると思われます。01

于 2013-11-06T22:09:16.160 に答える