6

这是这个问题的后续:

从 LINQpad 迁移到合适的 Visual Studio 项目?

..但我无法让它正常工作。

该问题的答案建议将上下文程序集作为 dll 转储,但尽管我已经这样做了,但当我将其作为参考导入时,我并不清楚如何创建该上下文的实例,将其指向数据库并实际对其运行查询,如下所示:

var db = new ContextFromThatDLL(myconnectionstring);

var query = from a in db.MYTABLE where a.ID == 1 select a;


额外的信息:

我正在使用 LinqPad 中的 IQ 驱动程序连接到 Oracle。

已经拥有 DevArt 的许可证(IQ 驱动程序使用该许可证),但我知道 IQ 驱动程序从 LINQ 生成自己的 SQL - 我更喜欢它。另外,我在 LinqPad 中开发了非常适合我的工作流程的查询,但我发现 DevArt 生成的 SQL 并不总是像 IQ 一样好。

4

1 回答 1

9

首先,提取 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();

这应该让你开始。请记住警告,如您链接的答案中所述!

于 2013-03-19T15:01:11.003 回答