Ошибка неподдерживаемого поставщика данных LINQ-to-SQL с SQL Server 2000

Я использовал LINQPad для прототипирования некоторых запросов к базе данных SQL 2000 и думал, что, поскольку я использую LINQPad, встроенный в поставщик LINQ to SQL, я смогу сгенерировать такой же контекст типизированных данных в проекте Visual Studio.

Я добавил новое подключение к данным в Visual Studio Server Explorer в VS2010. Это заставило меня использовать «Microsoft SQL Server (OLE DB)», потому что «Microsoft SQL Server (SqlClient)» работает только с SQL 2005 и выше. Затем я попытался перетащить таблицы на свою поверхность dbml, но получил следующее сообщение:

Выбранные объекты используют неподдерживаемого поставщика данных.

Я нашел очень хитрый обходной путь, скопировав DLL TypedDataContext, которую сам LINQPad создает в папку Temp, а также сослался на сам LINQPad.exe (который необходим для базового класса контекста типизированных данных). Но на самом деле я бы предпочел, чтобы LINQ to SQL работал правильно в моем проекте.

Я что-то делаю неправильно или глупо (я впервые использую LINQ to SQL)? Есть ли способ создать те же классы типизированных данных, что и LINQPad? Этот ответ указывает на то, что это должно быть возможно.


person Mark Heath    schedule 24.02.2012    source источник
comment
Ну, из любопытства, почему вы активно разрабатываете новое программное обеспечение, используя новые технологии для подключения к SQL Server 2000? SQL 2000 находится далеко за пределами основной поддержки, и различия между ним и SQL 2005+ сделают очень обременительным для вас последовательную разработку нового программного обеспечения ...   -  person Aaron Bertrand    schedule 24.02.2012
comment
Мы пишем внутренний инструмент для переноса данных из SQL Server 2000 в другую систему. LINQPad упростил создание прототипов всех запросов, которые мы хотели использовать, и я даже не знал, что это SQL server 2000, пока не попытался создать свой проект VS.   -  person Mark Heath    schedule 24.02.2012


Ответы (2)


Вы можете скопировать схему в поле SQL 2005/2008, а затем использовать его для создания типизированного DataContext в VS. Как только у вас будет типизированный DataContext, вы сможете передать ему строку подключения SQL 2000.

person Joe Albahari    schedule 25.02.2012
comment
спасибо за предложение. В итоге я просто создал типизированный DataContext в VS2008 - person Mark Heath; 27.02.2012

Похоже, что это ограничение Visual Studio 2010. Если вы создаете dbml в Visual Studio 2008, он без проблем подключается к SQL Server 2000 и может создавать типизированный DataContext LINQ to SQL.

person Mark Heath    schedule 27.02.2012
comment
Это отлично сработало, но необходимость найти копию Visual Studio 2008 просто для создания файла dbml для использования в Visual Studio 2010 просто раздражает. Насколько просто было бы для Microsoft оставить эту функциональность в VS2k10, я просто не понимаю. - person stephenbayer; 02.05.2012