2013-11-06 4 views
0

, когда я пытаюсь добавить в моей модели некоторые отмечают появляются 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 (объект) ` , потому что мои методы поля имеют тип, отличный от объекта

public void AddCompetition(Competition competition) 

ответ

0

В способе AdminPCreate вашего контроллера у вас есть new Competition { ID = 1, [..] }.

Это ID valueof 1 делает ваше хранилище думает, что существующий элемент, поэтому Entity Framework пытается обновить Competition записи, где ID = 1. Это не существует, поэтому ваша база данных возвращает «0 строк, затронутых», и возникает ошибка.

Я подозреваю, что при настройке ID на 0 вместо 1 в вашем контроллере он будет работать.

+0

ok, когда я устанавливаю id в 0, он показывает мне такое исключение «Нельзя вставить значение NULL в столбец« Id » – Alex

+0

@user, убедитесь, что это столбец идентификации (автоинкремент). – CodeCaster

+0

в DB ID (автоинкремент) .. и я должен сделать это и в моей модели? – Alex

Смежные вопросы