LINQ to SQL Server 2000:"必须声明变量' @ p0'"

时间:2012-04-04 17:41:06

标签: linq sql-server-2000

我已经创建了这个简单的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驱动程序] [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中。我更改了提供程序,查询现在可以正常工作。

2 个答案:

答案 0 :(得分:0)

事实证明SQL客户端提供程序确实可以与SQL Server 2000一起使用。只是不在Visual Studio 2010中。我更改了提供程序,查询现在可以正常工作。

答案 1 :(得分:-3)

如果您使用的是ODBC提供程序,则无法使用。更改为SqlClient。