Dapper regresa 01-01-0001 00:00:00 desde MySQL DATETIME

dapper datetime mysql

Pregunta

No puedo hacer que Dapper trabaje junto con la base de datos MySQL tipo DATETIME . Siempre devuelve "01-01-0001 00:00:00" para las columnas DATETIME . Aquí hay algunos detalles:

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

Mesa:

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

DO#:

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

así es como se ve una fila recuperada dentro de campaignDict:

enter image description here

PD. Estoy aprendiendo .NET, así que soy un novato en esta tecnología.

Respuesta aceptada

Dapper no elimina automáticamente los caracteres de subrayado a menos que se lo indiquen, a través de:

Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;

Entonces, lo que tienes aquí son propiedades que no se han mapeado desde columnas . El valor predeterminado de DateTime es: 01-01-0001 00:00:00.

Opciones:

  • habilitar la coincidencia de subrayado
  • alias las columnas en la consulta para que coincida con las propiedades
  • cambie las propiedades para que coincidan con las columnas de la base de datos
  • escribe un mapa de tipo personalizado


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué