ich diese einfache LINQ-Abfrage erstellt haben:LINQ to SQL Server 2000: "Muss Variable deklarieren '@ p0'"
var result = from invoice in invoiceTable
where invoice.Id == 1
select invoice.Document;
Es generiert die SQL:
SELECT [t0].[Document]
FROM [Invoice] AS [t0]
WHERE [t0].[Id] = @p0
Jedes Mal, wenn ich es laufen wenn ich diese Fehlermeldung erhalten:
(ODBC)
(OleDb)ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Must declare the variable '@p0'.
Must declare the variable '@p0'.
Ich erinnere mich, dass das Lesen OleDb und ADO.NET nicht benannte Parameter auf SQL Server unterstützen 2000. Ist das Problem zu diesem Problem im Zusammenhang, oder bin ich etwas anderes falsch?
UPDATE 1:
Dies scheint ein Anbieter Problem zu sein. Ich habe die gleiche Abfrage gegen SQL Server 2008 mit dem SQL-Client-Datenprovider versucht und es hat gut funktioniert. Leider funktioniert dieser Anbieter nicht mit SQL Server 2000.
Wenn ich versuchte, die ODBC und OLEDB-Anbieter mit SQL Server 2008 zu verwenden, habe ich die gleichen Fehler.
Kennt jemand eine geeignete Problemumgehung?
UPDATE 2:
Es stellt sich die SQL-Client-Anbieter 2000. Nur nicht tut Arbeit mit SQL Server aus innerhalb von Visual Studio 2010. Ich jetzt den Anbieter und die Abfrage funktioniert geändert.
Wenn Sie "run it through" sagen - Sie meinen, die eigentliche Abfrage auszuführen oder das generierte SQL über einen Profiler auszuprobieren? –
Verwenden Sie Linq zu SQL oder Entity Framework? – Phil
@JonSkeet Ich führe die eigentliche Abfrage ("obwohl" nicht "durch"). Die SQL, die ich eingefügt habe, zeigt sich im Profiler und im Debugger, wenn ich versuche, das Ergebnis zu bewerten. – ilitirit