SQLProvider 1.5.31

There is a newer version of this package available.
See the version list below for details.
dotnet add package SQLProvider --version 1.5.31
                    
NuGet\Install-Package SQLProvider -Version 1.5.31
                    
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="SQLProvider" Version="1.5.31" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SQLProvider" Version="1.5.31" />
                    
Directory.Packages.props
<PackageReference Include="SQLProvider" />
                    
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 SQLProvider --version 1.5.31
                    
#r "nuget: SQLProvider, 1.5.31"
                    
#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 SQLProvider@1.5.31
                    
#: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=SQLProvider&version=1.5.31
                    
Install as a Cake Addin
#tool nuget:?package=SQLProvider&version=1.5.31
                    
Install as a Cake Tool

Issue Status PR Status

SQLProvider NuGet Status

Join the chat at https://gitter.im/fsprojects/SQLProvider

A general .NET SQL database type provider. Current features :

  • LINQ queries
  • Lazy schema exploration
  • Automatic constraint navigation
  • Individuals
  • Transactional CRUD operations with identity support
  • Two-way data binding
  • Stored Procedures
  • Functions
  • Packages (Oracle)
  • Composable Query integration
  • Optional option types
  • Mapping to record types
  • Custom Operators
  • Supports Asynchronous Operations
  • Supports .NET Standard / .NET Core
  • Supports saving DB schema offline, and SQL-Server *.dacpac files

The provider currently has explicit implementations for the following database vendors :

  • SQL Server
  • SQLite
  • PostgreSQL
  • Oracle
  • MySQL (& MariaDB)
  • MsAccess
  • Firebird
  • DuckDB

There is also an ODBC provider that will let you connect to any ODBC source with limited features.

Documentation

SQLProvider home page contains the core documentation and samples. This documentation originates from docs/content/, so please feel free to submit a pull request if you fix typos or add additional samples and documentation!

Building Build status

  • Linux/macOS: Run build.sh
  • Windows: Run build.cmd

(Note: both scripts above use the dotnet command underneath; if you need to build with .NETFramework v4.x or Mono, rename the '.paket_netfx' to '.paket' first, before restoring & building manually with paket and msbuild.)

Known issues

  • Database vendors other than SQL Server and Access use dynamic assembly loading. This may cause some security problems depending on your system's configuration and which version of the .NET framework you are using. If you encounter problems loading dynamic assemblies, they can likely be resolved by applying the following element into the configuration files of fsi.exe, devenv.exe and your program or the program using your library: http://msdn.microsoft.com/en-us/library/dd409252(VS.100).aspx

Example

No OR-mapping: FSharp compiles your database to .NET-types.

Maintainer(s)

The default maintainer account for projects under "fsprojects" is @fsprojectsgit - F# Community Project Incubation Space (repo management)

Nuget Packages

Database Nuget Package TypeProvider Class NuGet Status
Microsoft SQL Server SQLProvider.MsSql FSharp.Data.Sql.MsSql.SqlDataProvider Nuget Nuget
PostgreSQL SQLProvider.PostgreSql FSharp.Data.Sql.PostgreSql.SqlDataProvider Nuget Nuget
MySQL and MariaDB SQLProvider.MySqlConnector FSharp.Data.Sql.MySqlConnector.SqlDataProvider Nuget Nuget
MySQL SQLProvider.MySql FSharp.Data.Sql.MySql.SqlDataProvider Nuget Nuget
Oracle SQLProvider.Oracle FSharp.Data.Sql.Oracle.SqlDataProvider Nuget Nuget
Any ODBC connection SQLProvider.Odbc FSharp.Data.Sql.Odbc.SqlDataProvider Nuget Nuget
SQLite SQLProvider.SQLite FSharp.Data.Sql.SQLite.SqlDataProvider Nuget Nuget
Microsoft Access SQLProvider.MsAccess FSharp.Data.Sql.MsAccess.SqlDataProvider Nuget Nuget
Firebird SQLProvider.Firebird FSharp.Data.Sql.Firebird.SqlDataProvider Nuget Nuget
DuckDb SQLProvider.DuckDb FSharp.Data.Sql.DuckDb.SqlDataProvider Nuget Nuget
General, all via manual config SQLProvider FSharp.Data.Sql.SqlDataProvider Nuget Nuget

Depending on the used provider, the namespace of the SqlDataProvider type class varies as above.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 is compatible.  net48 is compatible.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (5)

Showing the top 5 NuGet packages that depend on SQLProvider:

Package Downloads
Softellect.Sys

Softellect Sys Library provides primitive types and functionality needed by other Softellect packages.

Softellect.Messaging

Softellect Messaging Library provides a simple general framework to exchange large messages without specific IO.

FCQRS.SqlProvider

Package Description

Softellect.DistributedProcessing.Core

Softellect WorkerNode ...

FCQRS8.SQLProvider

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.5.32 48 11/14/2026
1.5.31 58 11/13/2026
1.5.30 220 11/3/2026
1.5.29 91 11/3/2026
1.5.28 1,587 10/17/2026
1.5.27 1,149 7/29/2026
1.5.26 252 7/10/2026
1.5.25 368 7/3/2026
1.5.24 312 6/14/2026
1.5.23 157 6/13/2026
1.5.22 168 6/11/2026
1.5.21 211 5/28/2026
1.5.20 168 5/26/2026
1.5.19 722 4/7/2026
1.5.18 239 3/31/2026
1.5.17 6,650 9/14/2025
1.5.16 1,026 9/9/2025
1.5.14 474 8/29/2025
1.5.12 1,466 7/21/2025
Loading failed

- Seq.lockForUpdate locks the rows a query reads until the transaction ends: FOR UPDATE on PostgreSQL (FOR UPDATE OF the other tables beside a left join), MySQL and Oracle (Oracle not with skip or a sorted take), FOR UPDATE WITH LOCK on Firebird (no joins), UPDLOCK and ROWLOCK on SQL Server; SQLite, MS Access, DuckDB and ODBC refuse it, and so does a locked query inside another query or a delete. New page: Locking rows
- Seq/Array/List.lockForUpdateAsync, Seq.lockForUpdateHeadAsync and Seq.lockForUpdateTryHeadAsync run a query with its rows locked
- OnConflict.DoNothingOn names the conflict's columns; OnConflict.UpdateOn names them and sets each listed column to the inserted value or a constant, keeping the others; PostgreSQL, SQLite 3.24+ and DuckDB; names are checked against the table's columns
- row.OnConflictDoNothing(fun r -&gt; r.Code) and row.OnConflictUpdate((fun r -&gt; r.Code), fun existing inserted -&gt; existing.Name &lt;- inserted.Name) say the same with the row's typed properties
- Fix: DuckDB's OnConflict wrote MySQL's ON DUPLICATE KEY UPDATE, which DuckDB rejects; it writes ON CONFLICT
- Fix: DuckDB found no table's primary key (it looked for MySQL's constraint name), so updates, deletes and OnConflict.Update failed and an insert didn't read its key
- Fix: SQLite gave a row whose insert a conflict ignored (OnConflict.DoNothing) the key of the row inserted before; it reads no key
- PostgreSQL: a function or procedure called inside a TransactionScope runs in that transaction instead of failing with "A transaction is already in progress"