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][ODBC SQL Server Driver][SQL Server]必须声明变量“@p0”。

(OleDb)

必须声明变量“@p0”。

我记得读过 OleDb 和 ADO.NET 不支持 SQL Server 2000 上的命名参数。这个问题与那个问题有关,还是我做错了什么?

更新 1:

这似乎是一个供应商问题。我使用 SQL 客户端数据提供程序对 SQL Server 2008 尝试了相同的查询,它运行良好。不幸的是,此提供程序不适用于 SQL Server 2000。

当我尝试在 SQL Server 2008 中使用 ODBC 和 OLEDB 提供程序时,我遇到了同样的错误。

有谁知道合适的解决方法?

更新 2:

事实证明,SQL 客户端提供程序确实适用于 SQL Server 2000。只是不是来自 Visual Studio 2010。我更改了提供程序,查询现在可以工作了。

4

2 回答 2

0

事实证明,SQL 客户端提供程序确实适用于 SQL Server 2000。只是不是来自 Visual Studio 2010。我更改了提供程序,查询现在可以工作了。

于 2012-04-05T09:57:44.020 回答
-3

如果您使用的是 ODBC 提供程序,它将不起作用。更改为 SqlClient。

于 2014-09-11T20:08:29.263 回答