La conversione di un tipo di dati datetime2 in un tipo di dati datetime ha comportato un valore fuori intervallo

asp.net-mvc datetime entity-framework

Domanda

Ho un'applicazione ASP.NET MVC in cui sto modificando un database esistente per aggiornare un campo paticolare, DateTime . Il mio database ha 4 campi, due dei quali sono DateCreated e DateModified . Quando provo ad aggiornare il campo, voglio mantenere uguale l' ora di DateCreated , nessun motivo per aggiornare la data di creazione e cambio l'ora DateModified all'ora corrente utilizzando DateTime.Now

Ecco il codice indicato solo nel caso in cui sto facendo qualcosa di sbagliato. Questa è la prima volta che utilizzo ASP.NET MVC, quindi sii gentile. Ho visto altre risposte in cui viene chiamato Context , ma non riesco a trovare alcun riferimento ad esso. Quando eseguo l'applicazione, ricevo il messaggio di errore nel titolo e contractEntity.SaveChanges() è in rosso.

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");
}

Per favore, ogni aiuto è apprezzato. Grazie.

Risposta accettata

Dopo aver letto questo sito ho scoperto di aprire il file .edmx per il mio database e modificare:

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

a

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

È accettabile o esiste un approccio migliore per correggere questo errore?


Risposta popolare

Per me, ho avuto lo stesso problema, ma il problema era che, per impostazione predefinita, quando salvavo il mio modello, veniva creato un DateTime non valido. Avevo un campo CreatedOn e non l'avevo impostato su nulla, il che significava che il valore era 01/01/0001 che era un DateTime non valido per SQL. Impostandolo mi sono liberato del problema.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché