LINQ到SQL Server 2000:“;必须声明变量'@p0'&引用;
我创建了这个简单的LINQ查询:LINQ到SQL Server 2000:“;必须声明变量'@p0'&引用;,linq,sql-server-2000,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][Mic
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'
(b)
必须声明变量'@p0'
我记得读到OleDb和ADO.NET不支持SQL Server 2000上的命名参数。这个问题与那个问题有关,还是我做错了什么
更新1:
这似乎确实是提供商的问题。我使用SQL客户机数据提供程序对SQL Server 2008进行了相同的查询,结果很好。遗憾的是,此提供程序不适用于SQL Server 2000
当我尝试在SQLServer2008中使用ODBC和OLEDB提供程序时,我遇到了相同的错误
有人知道合适的解决方法吗
更新2:
事实证明,SQL客户机提供程序确实与SQL Server 2000配合使用。只是不是在VisualStudio2010中。我更改了提供程序,查询现在可以工作。结果表明,SQL客户端提供程序确实可以与SQL Server 2000一起工作。只是不是在VisualStudio2010中。我更改了提供程序,查询现在可以工作。结果表明,SQL客户端提供程序确实可以与SQL Server 2000一起工作。只是不是在VisualStudio2010中。我更改了提供程序,查询现在可以工作。如果您使用的是ODBC提供程序,它将无法工作。更改为SqlClient。如果您使用的是ODBC提供程序,它将无法工作。更改为SqlClient。当您说“通过运行”时,您是指执行实际查询,还是通过探查器尝试生成的SQL?您是在使用Linq to SQL还是实体框架?@JonSkeet我在执行实际查询(“虽然”不是“通过”)。我粘贴的SQL是探查器中显示的内容,也是我尝试评估结果时的调试器。当你说“运行它”时,你是指执行实际查询,还是通过探查器尝试生成的SQL?你是在使用Linq to SQL还是实体框架?@JonSkeet我在执行实际查询(“虽然”不是“通过”)。我粘贴的SQL是探查器中显示的SQL,以及我尝试评估结果时的调试器。