Переходите с LINQpad на правильный проект Visual Studio? - PullRequest
6 голосов
/ 15 ноября 2011

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

  1. Возможно ли использовать IQ в моем решении в Visual Studio? Не получается найти какую-либо информацию об использовании его вне LINQpad. Я пытался использовать инструмент DbLinq DbMetal для генерации правильного класса соединения, но что-то в моей схеме задушило инструмент так, как не для IQ.

  2. Можно ли каким-либо образом экспортировать сгенерированный код для LINQpad? Сгенерированный код соединения Oracle отлично работает в LINQpad - есть ли способ просто повторно использовать этот сгенерированный код?

Ответы [ 3 ]

2 голосов
/ 16 ноября 2011

Да, вы можете использовать IQ (IQToolkit & IQToolkit-Oracle Provider) в своих проектах.Вы можете получить dll из вашей установки LINQPad (C: \ ProgramData \ LINQPad \ Drivers \ DataContext \ 4.0 \ IQDriver *).

Вам также потребуется использовать IQToolkit CodeGen tool для созданияваши сущности и сопоставления.

2 голосов
/ 17 ноября 2011

Да, технически возможно использовать типизированный DataContext, который LINQPad создает в вашем собственном решении VS. Вы можете извлечь его, запустив такой запрос:

File.Copy (GetType().BaseType.Assembly.Location, ...

Как предполагает Том, вам также необходимо скопировать вспомогательные файлы в C: \ ProgramData \ LINQPad \ Drivers \ DataContext \ 4.0 \ IQDriver. Помните, что LINQPad использует DevArt Oracle dotConnect в качестве бэкэнда ADO.NET для Oracle, для которого вам нужно будет приобрести коммерческую лицензию для использования в ваших собственных проектах.

Другая проблема заключается в том, что нет способа настроить типизированный DataContext, и это может оказаться ограничением в контексте написания решения VS (LINQPad генерирует типизированный DC через Reflection.Emit, и поэтому нет исходного кода для настройки).

Если вы хотите получить доступ к базам данных Oracle через LINQ в проекте VS, лучшим вариантом может быть приобретение профессиональной редакции DevArt dotConnect для Oracle , которая предоставляет вам весь стек, включая встроенный конструктор VS для написания DataContexts. (так что вам не понадобится IQ). Весь этот опыт очень похож на LINQ to SQL, но для Oracle (на самом деле, они подражали API везде, где это возможно, что исключает кривую обучения). Механизм перевода DevArt LINQ с годами улучшился и теперь близок к IQ по способности к переводу (и в некоторых отношениях лучше).

0 голосов
/ 16 ноября 2011

Как вы знаете, Linq to SQL изначально не поддерживает Oracle.

Предыдущий плакат SO гласил: «Начиная с бета-версии 4.35, LINQPad полностью поддерживает Oracle - теперь вы можете выполнять запросы« LINQ to Oracle ». Я считаю, что для управления этим великим подвигом он использует библиотеки DevArt dotConnect». [см https://stackoverflow.com/questions/1376132/linqpad-and-oracle/6821073#6821073]

, что наводит меня на мысль, что если вы хотите использовать ту же функциональность вне LinqPad, вам понадобится dev art oracle разъем

...