我已经创建了这个简单的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中。我更改了提供程序,查询现在可以正常工作。
答案 0 :(得分:0)
事实证明SQL客户端提供程序确实可以与SQL Server 2000一起使用。只是不在Visual Studio 2010中。我更改了提供程序,查询现在可以正常工作。
答案 1 :(得分:-3)
如果您使用的是ODBC提供程序,则无法使用。更改为SqlClient。