La stringa SQL generata per il comando linq2Entity First<> funziona correttamente con SQL server 2008. L'sql generato è SELECT TOP(1) ...
Per potersi collegare ad un DB SqlServer2005 serve modificare nei metadati la proprietà ProviderManifestToken="2005".
Emerge a questo punto l'errore che da il titolo al post: ogni chiamata a FirstOrDefault<> o First<> esplode riportando il messaggio sibillino.
L'inghippo è proprio l'SQL generato: TOP (1) sembra indigesto a sql server 2005.
La soluzione: usare come livello di compatibilità 2000 per la proprietà ProviderManifestToken.
La query generata è Top 1... , senza parentesi, e funziona su SqlServer2005
Questo post nei forum microsof illustra un problema simile e la soluzione.
Commenti