LINQPad 常见问题

常见问题分类

日常应用

如何显示多语句代码片段的执行结果?

请参考 LINQPad 中的“5分钟入门介绍(5-Minute Induction)”,这个范例详细的解释了上述问题。

我能否引用自定义程序集和 NuGet 包?

是的 - 请按F4键来添加引用。 NuGet包管理器仅在开发者版本和高级版本中提供 (但您仍然可以在免费版本中执行包含NuGet引用的查询,并重新下载引用的软件包)。

我是否可以引用程序集的内部类型?

当然可以。首先如果您使用 LINQPad 5,可以在菜单中选择 Edit (编辑)| Preferences (首选项)| Advanced(高级)选项卡,启用 Allow LINQPad to access internal types of other assemblies允许LINQPad 访问其他程序集中的内部类型即可; LINQPad 6以及之后版本则无需此步骤, 然后,在 LINQPad 引用的程序集工程中添加如下特性:

[InternalsVisibleTo("LINQPadQuery")]

(LINQPad 5): 我引用的自定义程序集需要从应用程序配置文件(app.config)中读取设置。如何在 LINQPad 的查询中使用该程序集?

最方便的方法就是按 (F4)打开 Query Properties(查询属性)对话框,然后选择 app.config选项卡。

您也可以在LINQPad.exe所在目录新建名为 linqpad.config的文件。 文件中的内容将应用于所有查询 (除非被“Query Properties(查询属性)对话框中的设置覆盖)。此外,不要将 linqpad.config 与 linqpad.exe.config 混淆:

  • linqpad.config 用于配置查询
  • linqpad.exe.config 用于配置LINQPad GUI程序

(LINQPad 6): 如何在查询中使用 appsettings.json 文件?

要引用文件,请按F4,然后在对话框中单击 Add Reference(添加引用)

提示: LINQPad 6会将引用的所有非程序集文件复制到查询的输出目录中,因此您也可以 引用文本文件、XML文件和原生DLL等文件。

能否运行多线程和异步代码?

LINQPad 既能够运行多线程代码也可以执行异步代码。LINQPad 明确支持 C# 的异步函数, Reactive Extension以及Microsoft DataFlow。 LINQPad内置的范例中就有相关演示 - 请参见“Samples(范例)”中的“ Tutorial and Reference >Scratchpad Features > Advanced Features.

数据库查询

为什么 LINQPad 以复数形式表示表属性和子表关联属性? 我能关闭该功能么?

以复数形式表示表属性以及子表关联属性 (父表则使用单数形式)可以使查询更加自然。如需关闭该功能, 请在添加数据库连接时取消对“Pluralize(使用复数)” 选项的勾选(也可以右键单击编辑现有连接属性)。

为什么 LINQPad 将列名的首字母设置为大写?我能关掉该功能吗?

LINQPad 将属性名称首字母大写以避免与 C# 关键字冲突。如需关闭此功能可在添加数据库连接时取消“Capitalize(首字母大写)” 的勾选(也可以右键单击编辑现有连接属性)

为什么LINQPad 区分大小写,而 SQL 并不是!

LINQPad 是否区分大小写取决于在 Language 下拉菜单中所选择的语言。其中 C#和 F# 区分大小写,而 VB与 SQL 则不区分大小写。(注意, 如果数据库的 collation 是区分大小写的, 那么数据库的表名和列名也是区分大小写的。)

为什么 LINQPad 使用 LINQ-to-SQL 来查询 SQL Server? 为什么不是 EntityFramework 或 Entity Framework Core?

LINQ-to-SQL 在数据库架构较大时速度更快。 它的 冷启动开销 低于 EF 或 EF CORE的一半。 因此使用LINQ-to-SQL可以降低 新查询延迟。 在使用 LINQPad 进行 SSMS 式数据探索时这是很重要的。 LINQPad 内置的LINQ-to-SQL 驱动程序历经多年积累, 支持存储过程、表-值函数、 SQL Azure 的多身份认证, 以及全保真 SQL 日志((其输出可以直接粘贴到 SMSS 中使用)。您甚至可以跨多个数据库进行查询, 并从链接服务器中执行数据表查询

EF Core的优势在于它支持多种提供商。 自LINQPad 6 之后, 内置EF Core驱动程序不仅支持SQL Server, 还支持 MySQL, Oracle, SQLite 与 PostgreSQL。

此外您可以在所有的LINQPad版本中使用 自己定义的Entity Framework模型执行查询

我是否可以对 XML 数据源或 SQL 表进行查询?

当然可以。LINQPad 中内置了相关范例。请参见“Samples(范例)”选项卡, “C# in a Nutshell”中的“Chapter 10”

我已经购买了LINQPad Premium 高级版本,并希望编写跨数据库查询。我如何做到这一点?

有两种方法。 最简单的方法是拖拽法: 请按住 Ctrl 键,同时 将其他数据库从 Schema Explorer(架构浏览器)中 拖放到查询编辑器中。 如需在查询中访问这些附加数据库,请使用database.table模式, 例如 Northwind.Regions.Take(100)。注意,这些数据库 必须位于同一服务器上。

第二种方法是在编辑连接属性时列出其他数据库。您还可以在该对话框中选择链接服务器上的数据库。 具体操作如下:

  1. 1. 添加一个新的 LINQ to SQL 连接。
  2. 2. 选择 Specify New or Existing Database(指定新数据库或现有数据库) 并选择待查询的主数据库。
  3. 3. 点击 Include Additional Databases(包括其他数据库) 复选框并选择要包含的的其他数据库。您也可以在此对话框中选择链接的服务器中的数据库。

自动完成和高级版许可

我知道一个单用户许可证可以同时激活最多三台计算机。 一旦达到此限制,我是否可以将许可证从一台计算机转移到另一台计算机?

是的-您最多可以在 12 个月内执行 6 次许可证转移 (多用户许可证则以此类推)。做法是, 从help(帮助)菜单中 选择 'Remove License(移除许可证)' 。 如果您忘记了具体的安装机器, 还可以 远程移除未使用机器上的许可证

我经常格式化并重新安装 Windows。当我重新激活 LINQPad 的自动完成功能时, 会不会浪费一次激活?

大多数情况下,LINQPad 在硬件相同时不会额外扣除激活次数。(如果有任何问题, 您可以远程移除旧机器上的激活)。

是否可以激活虚拟机?

当然可以。现在单用户许可证除提供三个物理激活外,还增加了三个可转移的虚拟激活(多用户许可证则以此类推)。虚拟激活将锁定在虚拟机及其宿主机上。 它支持 Microsoft Virtual PC、Hyper-V、Azure VirtualMachines、VMWare Server和 VMWare Workstation。

如果我购买了一个双用户的许可证,我是否会得到6个激活?

是的。

我拥有团队版或企业版许可证, 并希望自动激活 LINQPad。有没有方法通过命令行激活 LINQPad?

可以:

LINQPad.exe -activate=YOUR-ACTIVATION-CODE

或者,激活所有用户:

LINQPad.exe -activateall=YOUR-ACTIVATION-CODE

如果使用 LINQPad 安装程序, 也可以使用 /activate=开关/activateall=开关调用LINQPadxSetup.exe 在安装过程中激活 LINQPad。 您还可以使用的 /silent开关 进行静默安装。

在使用静默安装时可使用 /mergetasks="lprunpath"将 LINQPad 目录添加到 PATH 环境变量中。如果需要使用命令行工具 (lprun) 则上述操作是很重要的。

我的电脑没有网络连接, 是否可以进行离线激活?

可以, 需要几个手动步骤

我们公司的开发人员在三个不同的城市工作。团队和企业许可证是否在多个地点上有效?

是的。单个团队和企业许可证可以在多达十个不同的地点使用。此处“地点”指通常的营业地点。

我能找回丢失了激活码么?

点此 找回丢失的激活码。

非盈利、教堂或慈善机构是否有折扣?

没有。除了为减轻贫困/疾病,促进人权,实施动物福利或进行环境保护而注册的慈善机构外,上述机构一般都有资格获得免费许可证。此类情况请 联系客户服务

安全问题

我注意到, 在发布更新时, LINQPad 会自动进行自我修补。如何确保更新可信, 并在传输过程中未经篡改? 我的公司对安全要求很高!

所有更新都会由 RSA 签名。LINQPad 将拒绝签名异常的更新。

当保存包含 SQL 认证的连接时, LINQPad 是否会以普通文本存储密码?

绝对不会。LINQPad 将会使用 Windows 数据保护 API 对密码进行加密。

自定义 & 可扩展性

LINQPad提供了哪些扩展机制?

首先,可以 在 My Extensions(我的扩展) (快捷键 Shift+Ctrl+Y)中编写扩展方法(以及你希望在查询之间共享的任何其他代码)。

其次, 您还可以通过 LINQPad 中的 Dump 来控制自定义类型可以显示的字段和属性。除此之外, 还可以完全接管渲染功能。详细内容请 - 点此 查看。

第三, LINQPad 支持编写 自定义 Data Context 驱动 或实现 自定义的可视化工具

我希望在演示中使用 LINQPad。是否可以放大显示查询代码?是否支持无线翻页笔?

是的。 可以通过 Ctrl键+鼠标滚轮操作,或者 Ctrl+]和 Ctrl+[ 来缩放字体。 (您还可以调整Windows字体大小,LINQPad 可以感知DPI的设置。)

如需使用无线翻页笔,请选择 Edit 菜单中的 Preferences。单击“Advanced”选项卡,并启用演示文稿模式(Enable PresentationMode)。 就可以使用 罗技无线翻页笔 来进行如下操作:

  • 在“My Queries(我的查询)或“Samples(范例)”中,移动到下一个/上一个查询
  • 运行查询
  • 隐藏查询结果窗口

您还可以在查询中输入以下语句来显示特定的 PowerPoint 页面:

// Second argument = slide number to start at
PowerPoint.ShowSlide (@"c:\docs\MyPresentation.ppt", 1);

请注意, 该功能需要安装 PowerPoint Viewer 才能正常工作 (即使已经完整安装了PowerPoint 也仍然需要安装该软件)。祝您演讲顺利!