Как я могу использовать сгенерированный контекст LinqPad в Visual Studio

На самом деле это продолжение этого вопроса:

Переход с LINQpad на правильный проект Visual Studio?

.. но я не могу заставить его работать должным образом.

Ответ на этот вопрос предлагает сбросить сборку контекста как dll, но, хотя я сделал это, когда я импортирую ее в качестве ссылки, мне не совсем ясно, как я мог бы создать экземпляр этого контекста, указать его в базе данных и на самом деле запустите запрос к нему, что-то вроде следующего:

var db = новый ContextFromThatDLL (myconnectionstring);

var query = from a в db.MYTABLE, где a.ID == 1 select a;


Дополнительная информация:

Я использую драйвер IQ в LinqPad для подключения к Oracle.

У меня есть уже есть лицензия на DevArt (которую использует драйвер IQ), но я знаю, что драйвер IQ генерирует свой собственный SQL из LINQ, и я предпочитаю его. Кроме того, я разрабатываю запросы в LinqPad, который отлично подходит для моего рабочего процесса, но обнаружил, что DevArt не всегда генерирует SQL так же хорошо, как IQ.


person Neil Trodden    schedule 12.03.2013    source источник


Ответы (1)


Сначала извлеките контекст типизированных данных в LINQPad следующим образом:

string dcPath = GetType().BaseType.Assembly.Location;
string targetFolder = @"c:\temp";
File.Copy (dcPath, Path.Combine (targetFolder, Path.GetFileName (dcPath)));

Затем в Visual Studio сошлитесь на библиотеку DLL контекста типизированных данных вместе со следующими библиотеками DLL из папки драйвера:

  • IQDriver.dll
  • IQToolkit.dll
  • IQToolkit.Data.dll
  • IQToolkit.Data.(поставщик).dll

плюс драйвер DevArt.

Затем вы можете создать экземпляр контекста типизированных данных следующим образом (это иллюстрирует, как это сделать для SQLite):

var dc = new LINQPad.User.TypedDataContext (IQToolkit.Data.DbEntityProvider.From
   ("IQToolkit.Data.Sqlite", @"Data Source=D:\SQLite.NET\nutshell.db",
    "LINQPad.User.TypedDataContext"));

var customerCount = dc.Customers.Count();

Это должно помочь вам начать. Помните о предостережениях, как указано в ответе, на который вы ссылаетесь!

person Joe Albahari    schedule 19.03.2013