Поскольку существует две стадии проверки вашей модели.
Первый шаг выполняется проверкой ASP.Net MVC, которая проверяет ее перед использованием в методе действия. На самом деле в вашем коде вы просто очищаете список ошибок, обнаруженных ASP.Net MVC, но вы не установили правильные значения для свойств вашей модели, на которые влияют ошибки.
После этого первого шага проверки происходит Entity Framework Validation, которая выполняется при сохранении ваших сущностей в вашей базе данных путем вызова SaveChanges
. EF также использует тот же способ, что и ASP.Net MVC, используя аннотации данных, а также использует конфигурацию вашей модели для проверки вашей сущности. Как я уже говорил, вы только что очистили сообщение об ошибке, но не установили правильные значения, поэтому с EF у вас будут такие же ошибки.
Очистка сообщений об ошибках в вашем методе действия не очень помогает, за исключением того, что вы устанавливаете правильные значения для каждого свойства, связанного с ошибками.
В любом случае, если вы хотите отключить проверки EF, вы можете сделать это, установив эту конфигурацию в конструкторе DbContext
:
this.Configuration.ValidateOnSaveEnabled = false;
Это не рекомендуется, поскольку вы можете сохранить в базу данных неверные данные. Вы также можете получить исключение из вашей базы данных, например, если в вашей базе данных есть обязательный столбец, но вы отправляете значение null
из свойства, сопоставленного с этим столбцом.