Scusate il titolo ma non ne ho trovato un migliore ...
allora dopo essermi creato un db su sql server ed avere eseguito su di esso il tool aspnet_regsql.exe ho iniziato a creare qualche utente con lo strumento di amministrazione di visual studio (utlizzo tutti i provider messi a disposizione dal framework sia per le membership che per i role). Tutto ok fino a quando nn mi sono trovato a stampare in una mia pagina i dettagli di un utente. Infatti quando un utente viene creato viene impostato l'attributo LastLockoutDate con questo valore "1754-01-01 00:00:00.000" e cosi a primo impatto mi sono detto:
"Ok l'utente non è mai stato bloccato quindi viene impostato il valore minimo per un datetime"
Allora mi sono andato a scrivere una piccola funzioncina che mi intercettasse questo valore ed ho scritto
protected string TestMinDate(object date)
{
if (date == null)
return String.Empty;
try
{
if (DateTime.Parse(date.ToString()) == SqlDateTime.MinValue || DateTime.Parse(date.ToString()) == SqlDateTime.MaxValue)
return String.Empty;
else
return date.ToString();
}
catch { throw new ArgumentException(); }
}
Eseguo e non ottengo il risultato che voglio perche semplicemente il valore di SqlDateTime.MinValue è "1753-01-01 00:00:00.000" e non "1754-01-01 00:00:00.000" come l'attributo LastLockoutDate. A questo punto mi sono andato ad aprire la stored procedure che crea gli utenti e trovo questa istruzione
DECLARE @LastLockoutDate datetime
SET @LastLockoutDate = CONVERT( datetime, '17540101', 112 )
e non ne capisco la scelta anche perche effettivamente il campo accetta come valore minimo "1753-01-01 00:00:00.000" e non "1754-01-01 00:00:00.000"
Ora la mia domanda è questa:
Il framework di default lavora sempre con questa data "1754-01-01 00:00:00.000" oppure è semplicemente una scelta sbagliata di chi ha progettato le stored procedure per le membership API ?
Spero di non avervi annoiato troppo

Modificato da claudio_dg il 19 novembre 2011 08.38 -