asp.net-mvc - type - web forms c#
La conversión de un tipo de datos datetime2 a un tipo de datos datetime resultó en un valor fuera de rango (5)
Tengo una aplicación ASP.NET MVC donde estoy editando una base de datos existente para actualizar un campo particular, DateTime
. Mi base de datos tiene 4 campos, dos de los cuales son DateCreated y DateModified . Cuando trato de actualizar el campo, quiero mantener igual el tiempo de DateCreated , no hay razón para actualizar la fecha en que fue creado, y cambio el tiempo de DateModified a la hora actual usando DateTime.Now
Aquí está el código dado, por si acaso, estoy haciendo algo mal. Esta es la primera vez que uso ASP.NET MVC, así que vaya suave. He visto otras respuestas donde se llama Context
, pero no puedo encontrar ninguna referencia a él. Cuando ejecuto la aplicación, recibo el mensaje de error en el título y contractEntity.SaveChanges()
está en rojo.
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");
}
Por favor, cualquier ayuda se agradece. Gracias.
¿Solo usa un DateTime que admite nulos como DateTime? en la propiedad de su entidad de dominio si su columna en su base de datos puede ser anulada. Esto lo hará funcionar.
Después de leer este sitio web , encontré abrir el archivo .edmx para mi base de datos y cambiar:
<...Provider="System.Data.SqlClient" ProviderManifestToken="2008".../>
a
<...Provider="System.Data.SqlClient" ProviderManifestToken="2005".../>
¿Es esto aceptable o hay un mejor enfoque para corregir ese error?
Para mí, tuve el mismo problema, pero el problema fue que, por defecto, cuando guardé mi Modelo, se estaba creando un DateTime no válido. Tenía un campo CreatedOn y no lo había configurado para nada, lo que significaba que el valor era 01/01/0001, que era un DateTime no válido para SQL. Configurarlo me libró del problema.
También puede editar el modelo (o en EF en .edmx) y establecer StoreGeneratedPattern
en Computed para el campo en cuestión. Eso hará que no se guarde en ese campo, ya que el servidor SQL lo calcula.
Tengo el mismo error y descubrí que si tiene una base de datos SQL 2008 con un campo con fecha y hora Nullable, NO asigne explícitamente Null (Nothing) al campo en su código, esto causará este error, o puede cambiar todo DateTime campos a DateTime2.