LINQPad 常见问题

常见问题分类

常规

LINQPad作者?

LINQPad由Joe Albahari编写和维护,他也是 C# in a Nutshell的作者。 Joe长期作为被邀演讲者出席会议 ,他还延续获得过15次 微软MVP 奖。

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

请参考 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 是区分大小写的, 那么数据库的表名和列名也是区分大小写的。)

当在查询 SQL Server 时,LINQPad 让我可以选择 LINQ-to-SQL 或 EF Core。哪个更好?

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

EF Core的优势在于它不仅支持 SQL Server,还支持 MySQL、Oracle、SQLite 和 PostgreSQL。此外,如果您需要完全兼容 EF Core 的特性和功能,那么使用这个驱动程序是合理的。

使用 EF Core,您还可以 查询您在 Visual Studio 中定义的 Entity Framework 模型

我是否可以对 XML和JSON 数据源或 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 会自动进行自我修补。如何确保更新可信, 并在传输过程中未经篡改? 我的公司对安全要求很高!

更新通过 HTTPS 获取,并且使用 RSA 签名。LINQPad 将拒绝没有有效签名的更新。LINQPad 的更新服务器托管在 Microsoft Azure 上,遵循最佳方案,具有多层安全性。

当保存包含 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(微软不再提供免费的 PowerPoint Viewer)。祝您的演讲顺利!