我一直在使用LINQPad对SQL 2000数据库进行一些查询的原型,并认为由于我使用的是LINQPad的内置LINQ到SQL提供程序,因此我可以在Visual Studio项目中生成相同类型的数据上下文。
我在VS2010中向Visual Studio服务器资源管理器添加了一个新的数据连接。它迫使我使用"Microsoft SQL Server(OLE DB)",因为"Microsoft SQL服务器(SqlClient)"只适用于SQL 2005及更高版本。然后我试图将表拖到我的dbml表面上,但我得到了以下消息:
所选对象使用不受支持的数据提供程序
我发现了一个非常棘手的解决方法,将LINQPad自己构建的TypedDataContext dll复制到Temp文件夹中,并引用LINQPad.exe本身(这是类型化数据上下文基类所需的)。但实际上,我更愿意让LINQ到SQL在我的项目中正常工作。
我是做错了什么还是做得很愚蠢(这是我第一次使用LINQ to SQL)?有没有一种方法可以让我生成与LINQPad相同类型的数据类?这个答案表明这应该是可能的。
您可以将架构复制到SQL 2005/2008框中,然后使用该框在VS中创建类型化的DataContext。一旦获得了类型化的数据上下文,就应该能够为其提供SQL 2000连接字符串。
这似乎是Visual Studio 2010的限制。如果在Visual Studio 2008中创建dbml,它可以毫无问题地连接到SQL Server 2000,并且可以创建LINQ到SQL类型的DataContext。