2

この単純な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内からではありません。プロバイダーを変更すると、クエリが機能するようになりました。

4

2 に答える 2

0

SQLクライアントプロバイダーはSQLServer2000で機能することがわかりました。VisualStudio2010内からではありません。プロバイダーを変更すると、クエリが機能するようになりました。

于 2012-04-05T09:57:44.020 に答える
-3

ODBCプロバイダーを使用している場合は、機能しません。SqlClientに変更します。

于 2014-09-11T20:08:29.263 に答える