Подтвердить что ты не робот

Преобразование типа данных datetime2 в тип данных datetime приводило к превышению значения

У меня есть приложение ASP.NET MVC, где я редактирую существующую базу данных, чтобы обновить поле paticular, DateTime. Моя база данных имеет 4 поля, две из которых DateCreated и DateModified. Когда я пытаюсь обновить поле, я хочу сохранить DateCreated время одинаковое, нет причины обновлять дату, когда он был создан, и я изменяю время DateModified на текущее время с помощью DateTime.Now

Вот данный код, в любом случае я делаю что-то неправильно. Это мой первый раз, используя ASP.NET MVC, так что нежно. Я видел другие ответы, где Context вызывается, но я не могу найти ссылки на него. Когда я запускаю приложение, я получаю сообщение об ошибке в заголовке, а contractEntity.SaveChanges() - в красном.

public ActionResult Edit(Contract editContract) {
var contract = (from c in contractEntity.Contracts where c.Id == editContract.Id select c).First();
if (!ModelState.IsValid)
    return View(contract);
// editContract.DateCreated = contract.DateCreated;
// editContract.DateModified = DateTime.Now;
  contractEntity.ApplyCurrentValues(contract.EntityKey.EntitySetName, editContract);
  contractEntity.SaveChanges();
  return RedirectToAction("Index");
}

Пожалуйста, любая помощь приветствуется. Спасибо.

4b9b3361

Ответ 1

После прочтения этого веб-сайта я нашел, чтобы открыть .edmx файл для моей базы данных и изменить:

<...Provider="System.Data.SqlClient" ProviderManifestToken="2008".../>

к

<...Provider="System.Data.SqlClient" ProviderManifestToken="2005".../>

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

Ответ 2

Для меня у меня была такая же проблема, но проблема заключалась в том, что по умолчанию, когда я сохранил мою модель, создавалось недействительное DateTime. У меня было поле CreateOn, и я ничего не установил, что означало, что значение было 01/01/0001, что было неверным DateTime для SQL. Настройка этого избавила меня от этой проблемы.

Ответ 3

Вы также можете отредактировать модель (или в EF в .edmx) и установить StoreGeneratedPattern в Computed для данного поля. Это приведет к тому, что он не сохранит это в этом поле, потому что он вычисляется SQL-сервером.

Ответ 4

У меня такая же ошибка, и я обнаружил, что если у вас есть SQL 2008 DB с полем DateTime Nullable, НЕ явное назначение Null (Nothing) в поле вашего кода, это приведет к этой ошибке, или вы можете измените все поля DateTime на DateTime2.

Ответ 5

Просто используйте DateTime с нулевым значением DateTime? в свойстве сущности домена, если ваш столбец в вашей базе данных может быть нулевым. Это заставит его работать.