LINQ到SQL Server 2000:“必须声明变量 '@ P0'”(LINQ

2019-09-16 07:59发布

我创建了这个简单的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中,我改变了供应商和查询工作了。

Answer 1:

原来的SQL客户端提供程序与SQL Server 2000的工作只是不从Visual Studio 2010中,我改变了供应商和查询工作了。



Answer 2:

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



文章来源: LINQ to SQL Server 2000: “Must declare variable '@p0'”