ASP.NET MVC 4 ModelState недействителен при передаче ключа

У меня есть ASP.NET MVC 4 WebApi. Я использую Entity Framework в качестве ORM (сначала базу данных). В БД есть только одна тестовая таблица с несколькими полями с int «id», установленным как идентификатор (автоинкремент).

Я просто пытаюсь реализовать базовый CRUD с помощью клиента javascript, но всегда получаю ModelState.IsValid = false, когда добираюсь до метода POST. Я проанализировал ошибку и увидел, что она исходит из поля «id», которое имеет значение 0. Как API управляет такими ключами автоинкремента? Что он ожидает получить в поле «id»?

Все делается по шаблону. Я не менял код в сгенерированном WebApi контроллере. Все остальные операции (чтение, обновление, удаление) работают нормально.

РЕДАКТИРОВАТЬ: Обратите внимание, что если я обхожу тест ModelState.IsValid(), данные сохраняются в БД, и все работает... Но, очевидно, это не то, что я хочу делать.

EDIT 2: я обнаружил, что свойство identity в базе данных обрабатывается свойством StoreGeneratedPattern в поле id в EDMX. Возможные значения: «Вычислено», «Идентификация» и «Нет». В моем случае установлено значение «Идентификация».


person Patrice Cote    schedule 18.01.2013    source источник
comment
Вы сначала используете код EF или сначала модель?   -  person CodingGorilla    schedule 19.01.2013
comment
Проверьте свойство Id, есть ли у него атрибут Required?   -  person CodeNotFound    schedule 19.01.2013
comment
Как указано в вопросе, сначала это база данных. Я сгенерировал модель объекта из базы данных. И я не вижу атрибутов [Required] в классе сущностей.   -  person Patrice Cote    schedule 21.01.2013


Ответы (1)


Убедитесь, что проверка не ставится на идентификатор в вашей модели. Поместите идентификатор как автоматически сгенерированный.

person Romil Gandhi    schedule 28.09.2013