この単純なLINQクエリを作成しました:
var result = from invoice in invoiceTable
where invoice.Id == 1
select invoice.Document;
次のSQLを生成します。
SELECT [t0].[Document]
FROM [Invoice] AS [t0]
WHERE [t0].[Id] = @p0
このエラーが発生しましたが、実行するたびに:
(ODBC)
エラー[42000][Microsoft][ODBCSQLServerドライバー][SQLServer]変数'@p0'を宣言する必要があります。
(OleDb)
変数'@p0'を宣言する必要があります。
OleDbとADO.NETがSQLServer2000の名前付きパラメーターをサポートしていないことを読んだことを覚えています。この問題はその問題に関連していますか、それとも何か間違ったことをしていますか?
更新1:
これはプロバイダーの問題のようです。SQLクライアントデータプロバイダーを使用してSQLServer2008に対して同じクエリを試しましたが、正常に機能しました。残念ながら、このプロバイダーはSQLServer2000では機能しません。
SQL Server 2008でODBCプロバイダーとOLEDBプロバイダーを使用しようとすると、同じエラーが発生しました。
誰かが適切な回避策を知っていますか?
更新2:
SQLクライアントプロバイダーはSQLServer2000で機能することがわかりました。VisualStudio2010内からではありません。プロバイダーを変更すると、クエリが機能するようになりました。