我创建了这个简单的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)
ERROR [42000] [微软] [ODBC SQL Server驱动程序] [SQL服务器]必须声明变量 '@ P0'。
(OLEDB)
必须声明变量“@ P0”。
我记得读这OleDb的和ADO.NET不支持SQL Server 2000上的命名参数是这个问题涉及到这个问题,还是我做别的事情了?
更新1:
这似乎是一个供应商的问题。 我尝试使用SQL客户端数据提供对SQL Server 2008相同的查询和它工作得很好。 不幸的是,这个供应商不使用SQL Server 2000的工作。
当我尝试使用ODBC和OLEDB提供商与SQL Server 2008,我得到了同样的错误。
有谁知道一个合适的解决办法吗?
更新2:
原来的SQL客户端提供程序与SQL Server 2000的工作只是不从Visual Studio 2010中,我改变了供应商和查询工作了。