Dans subsonique, version 2.2, le code suivant (MSSQL spécifique) échoue:Utilisation de la fonction SQL Server dans SqlExpression dans Update requête
SqlQuery update =
new Update(SomeTable)
.SetExpression(SomeTable.SomeDateTimeColumn).IsEqualTo("GETDATE()")
.Where(SomeTable.IdColumn).IsEqualTo(id);
À ce stade update.ToString()
produit une phrase SQL parfaitement légal:
UPDATE [dbo].[SomeTable] SET [SomeDateTime]=GETDATE()
WHERE [dbo].[SomeTable].[ID] = @ID0
update.Execute()
échoue cependant avec:
{"Failed to convert parameter value from a String to a DateTime."}
at SubSonic.Update.Execute()
Est-ANY possibilité d'utiliser les fonctions du serveur sql dans les expressions?
Merci pour la réponse rapide :) Le problème est que j'ai besoin de l'horodatage du serveur de base de données dans l'expression. En fait, je fais un peu d'arithmétique d'horodatage, et comme il semble que InlineQuery semble être ma seule option pour le moment. Ou une opération en deux étapes en transcation, je peux obtenir ma valeur par un SQL séparé (cela fonctionne): DateTime dt = new InlineQuery(). ExecuteScalar (String.Format ("SELECT DATEADD (seconde, {0}, GETDATE ()) ", Math.Abs (timeout))); –