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

tec*_*cal 6 c# linq oracle linqpad visual-studio

我正在学习LINQpad中的LINQ to SQL,它一直都很棒,但是在我不太了解的情况下会发生很多神奇的事情.我使用可以在LINQpad中下载的可选IQ驱动程序连接到Oracle数据库.我有我的查询工作,现在我需要将它移动到Visual Studio中的新项目.

  1. 是否可以在Visual Studio的解决方案中使用IQ?我似乎无法找到有关在LINQpad之外使用它的任何信息.我试图使用DbLinq的DbMetal工具来生成正确的连接类,但是我的模式中的某些东西正在以一种不适用于IQ的方式阻塞该工具.

  2. 可以以某种方式导出生成的LINQpad代码吗?生成的Oracle连接代码在LINQpad中完美运行 - 有没有办法只重用生成的代码?

Joe*_*ari 2

是的,从技术上讲,可以使用 LINQPad 在您自己的 VS 解决方案中创建的类型化 DataContext。您可以通过运行如下查询来提取它:

File.Copy (GetType().BaseType.Assembly.Location, ...
Run Code Online (Sandbox Code Playgroud)

正如 Tom 建议的那样,您还需要复制 C:\ProgramData\LINQPad\Drivers\DataContext\4.0\IQDriver 中的支持文件。请记住,LINQPad 使用 DevArt Oracle dotConnect 作为 Oracle 的 ADO.NET 后端,您需要购买商业许可证才能在您自己的项目中使用。

另一个问题是,无法自定义类型化 DataContext,这可能会限制编写 VS 解决方案的上下文(LINQPad 通过 Reflection.Emit 生成类型化 DC,因此无需调整源代码)。

如果您想在 VS 项目中通过 LINQ 访问 Oracle 数据库,更好的选择可能是购买 DevArt 的dotConnect for Oracle专业版,它为您提供了整个堆栈,包括用于编写 DataContext 的集成 VS 设计器(因此您不需要 IQ) 。整个体验非常类似于 LINQ to SQL,但对于 Oracle(事实上,他们尽可能模仿 API,从而消除了学习曲线)。DevArt 的 LINQ 翻译引擎多年来不断改进,现在在翻译能力上接近 IQ 的翻译能力(并且在某些方面更好)。