viernes, 10 de abril de 2015

Timeout en MySQL con Entity Framework

Si se produce un timeout en MySQL con Entity Framework la primera opción que se nos podría ocurrir es agregar el parámetro default command timeout en la cadena de conexión:



<add name="Entities" connectionString="metadata=res://*/DAL.MyModel.csdl|res://*/DAL.MyModel.ssdl|res://*/DAL.MyModel.msl;provider=MySql.Data.MySqlClient;provider connection string='server=localhost;persistsecurityinfo=False;user id=root;password=;database=myddatabase;default command timeout=300'" providerName="System.Data.EntityClient" />

Por desgracia esta solución no funciona debido a un bug en el connector / NET de MySQL. Ver ref. bug.


Por suerte existe una opción para cambiar este valor para el object context en Entity Framework, dependiendo de la versión de Entity Framework:


Entity Framework 6:



this.context.Database.CommandTimeout = 180;

Entity Framework 5:



((IObjectContextAdapter)this.context).ObjectContext.CommandTimeout = 180;

Entity Framework 4 e inferiores:



this.context.CommandTimeout = 180;


Timeout en MySQL con Entity Framework

martes, 7 de abril de 2015

Convertir UNIX TimeStamp a DateTime

Es posible que en alguna ocasión te hayas encontrado con valores de fecha que aparentemente no lo son, pueden ser generalmente valores enteros muy grandes.


En mi experiencia lo que puedes estar viendo es un valor almacenado en un formato Excel o un UNIX timestamp.


Para convertir UNIX TimeStamp a DateTime en C# .Net podremos utilizar lo siguiente:



public static DateTime UnixTimeStampToDateTime( double unixTimeStamp )

// Unix timestamp son los segundos pasados después de una época
System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc);
dtDateTime = dtDateTime.AddSeconds( unixTimeStamp ).ToLocalTime();
return dtDateTime;



Convertir UNIX TimeStamp a DateTime