Dapper retourne 01-01-0001 00:00:00 de MySQL DATETIME

dapper datetime mysql

Question

Je ne parviens pas à faire fonctionner Dapper avec le type DATETIME base DATETIME données MySQL. Il renvoie toujours "01-01-0001 00:00:00" pour les colonnes DATETIME . Voici quelques détails:

.NET: 
DNX 4.5.1
MysqlData 6.9.8
Dapper - 1.50.0-beta6
MySQL: Server Version: 5.5.43-0+deb8u1

Table:

CREATE TABLE campaign (
  id int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  ...
  creation_date datetime DEFAULT NULL,
  last_modified datetime DEFAULT NULL,
  ...
)
ENGINE = INNODB

C #:

public class Campaign 
 {
     public int Id { get; set; }
     public DateTime CreationDate {get; set; }
     public DateTime LastModified { get; set; }
     public DateTime StartDate { get; set; }
     public DateTime EndDate { get; set; }
 }


...
const string myConnectionString = "server=[IP];uid=[usr];pwd=[pass];database=[db];AllowZeroDatetime=false;";
 try
 {
     _conn = new MySqlConnection { ConnectionString = myConnectionString };
     _conn.Open();
 }
...

public Dictionary<int, Campaign> GetCampaigns()
{
            var campaignsDict = _conn.Query<Campaign>("select * from campaign").ToDictionary(row => row.Id,row => row);
            return campaignsDict;
} 

c'est comme cela qu'une ligne récupérée regarde dans les campagnesDict:

entrer la description de l'image ici

PS Je suis juste en train d'apprendre .NET, donc je suis un noob dans cette technologie.

Réponse acceptée

Dapper ne supprime pas automatiquement les caractères de soulignement, sauf indication contraire, via:

Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;

Donc, ce que vous avez réellement ici, ce sont des propriétés qui n'ont pas été mappées à partir de colonnes . La valeur par défaut d'un DateTime est: 01-01-0001 00:00:00.

Options:

  • activer le soulignement correspondant
  • alias les colonnes de la requête pour correspondre aux propriétés
  • modifier les propriétés pour correspondre aux colonnes de la base de données
  • écrire une carte de type personnalisé


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi