DataOil.LINQPad 0.1.5

Prefix Reserved
dotnet add package DataOil.LINQPad --version 0.1.5
                    
NuGet\Install-Package DataOil.LINQPad -Version 0.1.5
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DataOil.LINQPad" Version="0.1.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DataOil.LINQPad" Version="0.1.5" />
                    
Directory.Packages.props
<PackageReference Include="DataOil.LINQPad" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DataOil.LINQPad --version 0.1.5
                    
#r "nuget: DataOil.LINQPad, 0.1.5"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DataOil.LINQPad@0.1.5
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DataOil.LINQPad&version=0.1.5
                    
Install as a Cake Addin
#tool nuget:?package=DataOil.LINQPad&version=0.1.5
                    
Install as a Cake Tool

DataOil.LINQPad

The LINQPad 9 driver for Data Oil. Add a connection, name an engine, a database and a credential, and the database's types become a typed Entity Framework Core context: one set and one class per type your credential may read, a property per declared property, and the schema tree to browse them. Queries run through DataOil.EntityFrameworkCore, and the statements it sends appear in the SQL tab.

It needs LINQPad 9: the provider is .NET 10, and LINQPad 8 cannot run a query on .NET 10.

Installing

From the package directory. In LINQPad 9: Add Connection, then View more drivers..., Settings, and add the folder that holds the DataOil.LINQPad package (with DataOil.EntityFrameworkCore and DataOil.Client beside it) as a package source. Choose Show all drivers, find DataOil.LINQPad and install it. The driver is then listed as Data Oil under Add Connection.

From a build of your own, while the driver is being worked on: publish it into LINQPad's driver folder, which creates the folder and brings the provider, the client and their dependencies with it.

dotnet publish src/DataOil.LINQPad -c Release \
    -o %LOCALAPPDATA%/LINQPad/Drivers/DataContext/NetCore/DataOil.LINQPad

LINQPad finds a driver there when it starts.

Close LINQPad before copying. LINQPad loads a driver through a cache of its own, so the files in the driver folder are not locked while it runs: a copy over a running LINQPad can remove the old assemblies and fail to write the new ones, leaving a folder of .pdb, .xml and .deps.json with no assembly in it. LINQPad cannot load that, and says nothing about it - Data Oil is simply absent from Add Connection. Close LINQPad and copy again.

LPRun9.exe checks an install without opening the window: run any .linq file naming a Data Oil connection, and a driver that is installed and can reach the engine answers about the credential rather than failing to load.

The connection

Field What it is
Endpoint The engine's address, such as https://acme.dataoil.tech
Database The database's name
User name and password, or API key Your Data Oil credential; an API key is used instead of the account when given. Both are stored encrypted by LINQPad
Job ID What the engine files the work under in its audit and bill; linqpad unless you say otherwise
Accept a self-signed certificate For a development deployment, and nothing else

Test reads the schema, which is the first thing the driver does on connecting, and says how many types your credential may read.

Names

A type's set is its name made plural and its class is the name itself: Customers of Customer. A name already plural keeps it for the set and its class is the singular: Tags of Tag. A name C# cannot spell - a space, a bracket, a keyword, a leading digit - becomes the nearest identifier, such as App_Usage_Time_min_day for App Usage Time (min/day); the column it reads is always the name the database has. The record's @rid is Rid on every class.

Querying

user_behaviour_dataset_rows
    .Where(r => r.Age > 40)
    .GroupBy(r => r.Operating_System)
    .Select(g => new { Os = g.Key, Users = g.Count() })

this.DataOil().StatementAsync("...") runs a statement in the engine's own dialect over the same connection - for a property no schema declares, a graph traversal, a vector search. A property whose Data Oil type the provider does not map, such as EMBEDDED, is shown in the tree as not mapped and read that way.

The samples

Two, under Samples in LINQPad for a driver installed from the package, and in linqpad-samples/ for one installed by copying the build output:

  • Data Oil - typed LINQ over your own schema - the driver's own sets: a count, a filter, a GroupBy, ordering and paging, and Rid. It names one database's types and says to change them for yours.
  • Data Oil - the engine's own statements - the schema as the engine describes it, and a statement in the engine's own dialect. It reads the schema for its type names, so it runs against any database unchanged.

The schema is read when the connection is opened. If it changes while LINQPad has the connection open, the provider's own check refuses the next query naming what moved; refresh the connection to read it again.

Product Compatible and additional computed target framework versions.
.NET net10.0-windows7.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.5 101 10/24/2026