2009-05-01 3 views
0

Я довольно новичок в платформе Entity Framework и в процессе создания своего первого приложения MVC. Я реализую Create View для простого объекта, однако у меня возникают проблемы с первичным ключом столбца (SQL Express 2005) Identity. Насколько я понимаю, Framework должен обрабатывать столбец Identity и позволить базе данных SQL генерировать значение ID.Столбец Identity Framework не работает

Когда я пытаюсь сохранить с помощью Create View без установки значения ID, я получаю сообщение об ошибке «Значение обязательно». Если я укажу любое значение ID, оно будет возвращено в базу данных с использованием значения Identity из базы данных - т.е. а не значение, которое я указал, поэтому T-SQL, очевидно, генерируется правильно, как только он дойдет до этого.

Свойство Идентичность устанавливается на колонке ID в базе данных и StoreGeneratedPattern установлен в положение «идентичности» в модели (смотрите ниже): -

Property Name = «ID» Тип = «ИНТ» Nullable = "false" StoreGeneratedPattern = "Identity"

Я что-то упустил? Как сообщить модели, что значение не требуется для этого столбца?

ответ

0

Вы не указали, откуда происходит ошибка «Значение требуется». Целочисленные значения в вашей модели клиента по умолчанию равны нулю, поэтому всегда будет значение. Не видя стека, я думаю, что ошибка происходит откуда-то еще. Посмотрите на стек, когда увидите ошибку, и выясните, какая часть вашего приложения поднимает ее.

+1

Вы являются правильными. Это не связано с базой данных. UpdateModel (сущность) терпит неудачу, когда получает FormCollection. Попытка его другим способом ModelState.IsValid = false при передаче объекта. «Требуется значение», для подтверждения которого возвращается значение проверки. – 2009-05-01 15:06:38

1

Тайна решена. Кажется, проблема была результатом моего соглашения об именах, всегда использующего «ID» в качестве имени столбца для столбца идентификатора.

Когда я звоню

http://.../Vacancy/Create

Движок маршрутизации собирание это вверх, как

Action = Create; ID = ""

из MapRoute "{контроллер}/{действие}/{ID}"

Измененный имя столбца идентичности с "VacancyID" в модели и вуаля все работает как надо.

0

Я хотел бы создать собственный маршрут, это то, что они для любом случае ...

0

Если вы не хотите, чтобы изменить схему базы данных можно добавить правило маршрутизации без параметра ид

routes.MapRoute(
    "Create", 
    "{controller}/Create", 
    new { action = "Create" } 
);