AnoopGharu Ответов: 2

При обновлении записей произошла ошибка. Подробности смотрите в разделе InnerException.


Привет всем,я получил ошибку, когда пытался обновить данные в базе данных в моем 1-м ASP.Net приложение MVC и ошибка есть "
An error occurred while updating the entries. See the InnerException for details.
Поэтому, пожалуйста, помогите мне решить эту проблему.Вот ниже приведен код:

public ActionResult Create()
  {
      return View();
  }
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude="Id")] Movie movieToCreate)
  {
      if (!ModelState.IsValid)
          return View();

      _db.AddToMovies(movieToCreate);
      _db.SaveChanges();  //Error Line

      return RedirectToAction(movieToCreate);
     }

Rob Philpott

Сначала взгляните на внутреннее исключение. Когда исключение возникает в VS, нажмите кнопку "просмотреть детали", и это должно сказать вам, в чем проблема.

AnoopGharu

Я проверяю его, сэр, но когда я пытаюсь обновить значения, он снова показывает ту же ошибку "SqlDateTime overflow. Должно быть, между 1/1/1753 12:00:00 утра и 12/31/9999 11:59:59 вечера."

Rob Philpott

Почти наверняка у вас будет DateTime.MinValue (1 января 0001 года). SQL server не может хранить это, потому что, как уже было сказано, он может хранить только даты начиная с 1753 года.

AnoopGharu

Не могли бы вы помочь мне, что мне нужно написать в моем приложении, чтобы сохранить в таблице базы данных, потому что я новичок в этом деле ASP.Net MVC.

Jameel VM

что такое внутреннее исключение?

AnoopGharu

Это внутреннее исключение "переполнение SqlDateTime. Должно быть, между 1/1/1753 12:00:00 утра и 12/31/9999 11:59:59 вечера."

Sinisa Hajnal

Вот вам и ответ. Найдите, где вы храните даты, и перед отправкой даты в базу данных установите для нее какое - то фиксированное значение, которое, как вы знаете, всегда "неправильно" - то есть, если пользователь не выбирает какую-либо дату, вы должны указать какое-то значение по умолчанию.

AnoopGharu

Спасибо вам ,сэр, за вашу лучшую заботу:), теперь я все понял.

2 Ответов

Рейтинг:
2

Member 12655721

пожалуйста, проверьте все столбцы, в которых есть некоторые столбцы, не допускающие null.
В моем случае столбец [ID] не допускает null, поэтому вам нужно дать ему значение.


CHill60

Нет - просто проверьте столбцы datetime - ошибка была "переполнение SqlDateTime. Должно быть, между 1/1/1753 12:00:00 утра и 12/31/9999 11:59:59 вечера."
Вы не добавили ничего ценного по сравнению с тем, что было сказано в решении 1 5 лет назад

Рейтинг:
19

Jameel VM

Если у вас есть какое либо свойство DateTime в классе Movie пожалуйста инициализируйте его текущим DateTime как показано ниже перед сохранением

movieToCreate.DateProperty=DateTime.Now;
_db.AddToMovies(movieToCreate);
_db.SaveChanges();

Надеюсь, это поможет


AnoopGharu

Спасибо, сэр, теперь я понял.Не могли бы вы объяснить мне немного подробнее, почему мне нужно инициализировать это свойство DateTime?

Sinisa Hajnal

Потому что база данных не может принять значение даты до 1783 года, а значение по умолчанию для вашего кода-год 0001...вам не нужно инициализировать его до сих пор. Это зависит от ваших потребностей. Вы можете инициализировать его до 1.1.3000, чтобы показать, что никто не вводил никакого "реального" значения. И если ваше приложение все еще активно после 986 лет, когда это становится актуальным Браво :) ошибка Y3K

Jameel VM

Хороший ответ..