从LINQpad迁移到一个正式的Visual Studio项目?

7

我正在学习LINQ to SQL,并在LINQpad中使用它,这非常棒,但是底层发生了很多我不太理解的魔法。我使用可以在LINQpad中下载的可选IQ驱动程序连接到Oracle数据库。我的查询已经工作正常,现在我需要将其移植到Visual Studio中的新项目中。

  1. 是否可以在Visual Studio的解决方案中使用IQ? 我似乎找不到任何关于在LINQpad之外使用它的信息。我尝试使用DbLinq的DbMetal工具来生成正确的连接类,但是我的模式中的某些内容会使该工具出现故障,而在IQ中则没有。

  2. 是否可以以某种方式导出LINQpad生成的代码? 生成的Oracle连接代码在LINQpad中完美运行-是否有一种方法可以重用那些生成的代码?

3个回答

2

是的,您可以在项目中使用IQ(IQToolkit和IQToolkit-Oracle Provider)。您可以从LINQPad安装中获取dll文件(C:\ ProgramData \ LINQPad \ Drivers \ DataContext \ 4.0 \ IQDriver *)。

您还需要使用IQToolkit CodeGen工具来创建实体和映射。


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

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

如Tom所建议的那样,您还需要复制C:\ProgramData\LINQPad\Drivers\DataContext\4.0\IQDriver中的支持文件。请注意,LINQPad使用DevArt Oracle dotConnect作为Oracle的ADO.NET后端,因此您需要购买商业许可证才能在自己的项目中使用。
另一个问题是没有办法自定义类型化的DataContext,这可能会在编写VS解决方案的上下文中限制功能(LINQPad通过Reflection.Emit生成类型化的DC,因此没有源代码可以调整)。
如果您想通过LINQ在VS项目中访问Oracle数据库,更好的选择可能是购买DevArt的dotConnect for Oracle专业版,其中包括一个集成的VS设计器,用于编写DataContexts(因此您不需要IQ)。整个体验非常像LINQ to SQL,但适用于Oracle(事实上,他们尽可能地模仿了API,消除了学习曲线)。 DevArt的LINQ翻译引擎经过多年改进,现在接近于IQ的翻译能力(在某些方面更好)。

0

正如您所知,Linq to SQL不支持Oracle本地化。

之前的SO帖子中提到:“从beta版本4.35开始,LINQPad完全支持Oracle - 您现在可以执行“LINQ to Oracle”查询。我相信它使用DevArt dotConnect库来管理这个伟大的功能。” [请参见https://dev59.com/l3M_5IYBdhLWcg3wcSt_#6821073]

这让我想到,如果您想在LinqPad之外获得相同的功能,则需要获取dev art oracle connector


LINQPad肯定使用devArt dotConnect for Oracle,但是我无法弄清楚它是否是构建数据上下文所必需的。在选择要下载的驱动程序时,IQ的描述是“由WiCKY Hu提供的Oracle IQ Provider。 DevArt提供的MySQL和Oracle的ADO.NET提供程序”。这是否意味着IQ是基于dotConnect构建的? - technomalogical
1
IQ允许您插入自己的格式化程序和提供程序。LINQPad的IQ包括一个Oracle格式化程序(由WiCKY Hu编写)和一个使用DevArt的ADO.NET类为Oracle的数据库提供程序。我记得WiCKY的格式化程序最初是针对Oracle客户端编写的 - 我将其切换为使用DevArts的产品,以避免必须安装臃肿的Oracle客户端。 - Joe Albahari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接