Frage

Die Anforderung ist fehlgeschlagen Execute wird, wenn man von Feldern zugeordnet werden muss Datetime-Feld und den entsprechenden Wert in DB hat ‚0000-00-00‘ oder ‚0001-01-01‘. Der folgende Fehler wird zurückgegeben

  

Nicht imstande MySQL Datum / Zeit-Wert zu System.DateTime

zu konvertieren

Gibt es eine Möglichkeit, einen solchen Wert zu holen?

Ich habe versucht, die angeben, "Datetime? Wert als Objekttyp -. es nicht allzu hilft (eigentlich habe ich nicht erwartet, dass hilfreich sein)

P. S. Ich verwende MySql 5.1

War es hilfreich?

Lösung

stieß ich auf ein ähnliches Problem mit NHibernate mit dem gleichen Fehler in einer Ausnahme.

Es ist aufgrund MySQL einzigartigen „Feature“ ungültiger Daten in einem DATE-Feld ermöglicht, insbesondere 0000-00-00 als Standardwert für DATE NOT NULL-Spalten verwenden. Wenn ein solches Datum festgestellt wird, ist es eine Ausnahme auslöst, wenn sich in ein Datetime zu konvertieren.

Die vorgeschlagene Lösung für dieses Add war zu

Lassen Sie Null für Datum und Uhrzeit = true;

zu der Verbindungszeichenfolge, jedoch in dieser Praxis nicht für mich arbeiten. Ich löste schließlich das Problem, indem die Verbindungszeichenfolge zu ändern Hinzufügen

Konvertieren Null Datetime = true;

so Ihr app.config Abschnitt in etwa so aussehen würde

  <connectionStrings>
<add
  name="ConnectionString.MySql"
  connectionString="Server=localhost;Port=3306;Database=BLT;Uid=someuser;Convert Zero DateTime=true;"
  providerName="MySql.Data.MySqlClient"/>

Andere Tipps

Haben Sie versucht, das MapValue Attribut? Ich bin nicht sicher, ob dies funktionieren wird, aber ...

[MapValue(null, "0000-00-00")]
[MapValue(null, "0001-01-01")]
public DateTime? theDate;

Ich glaube, Sie sie durch eine andere Eigenschaft steuern müssen.

 [MapField("the_date")]
 public DateTime? theDate; // Map
 [MapIgnore]
 public DateTime theDateControl
 {
     set {
         if(theDate.HasValue)
         {
            ....
         }
     }
 }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top