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 Q uesto post nei forum microsof illustra un problema simile e la soluzione.
un blog tecnico di Mauro