diff --git a/core/async.html b/core/async.html index 83bd4e81..8f6ed30d 100644 --- a/core/async.html +++ b/core/async.html @@ -70,7 +70,7 @@ @@ -251,22 +251,22 @@

SQLProvider

Asynchronous Database Operation

You get more performance by concurrency. The idea of async database operations is to release the business logics thread while the database is doing its job. -This can lead to a huge performance difference in a heavy traffic environment +This can lead a huge performance difference on heavy traffic environment (basically, will your business logics server / web-server crash or not).

In the picture, we talk about the red block, which can be released to serve other customers. As usual with async operations, there will be more thread context switching, which may cause minor performance delays, but concurrency benefits should outweigh the -cons of context switching.

-

This is the theory. In practice, SQLProvider is calling the implementation of async methods from +context switching cons.

+

This is the theory. In practice SQLProvider is calling implementation of async methods from abstract classes under System.Data.Common. The implementation quality of your database -connection .NET drivers will determine whether or not async is good for you. (E.g. The current -situation is that MS-SQL-server handles async well, and MySQL does not so.)

-

Currently, SQLProvider supports async operations on runtime, not design-time.

+connection .NET drivers will define if async is good for you or not. (E.g. The current +situation is that MS-SQL-server handles async well and MySQL not so.)

+

Currently SQLProvider supports async operations on runtime, not design-time.

Your execution thread may change. For transactions to support this, -.NET 4.5.1 has a fix for asynchronous transactions that must be explicitly used.

+.NET 4.5.1 has a fix for asynchronous transactions that has to be explicitly used.

Async queries and updates

-

The concept for async queries is this:

+

Concept for async queries is this:

open System
 open System.Threading.Tasks
 open FSharp.Data.Sql
@@ -315,15 +315,15 @@ 

Database asynchrony can't be used as a way to do parallelism inside one context.

-

Usually, database operations can't be executed in parallel inside one context/transaction. -That is an anti-pattern in general: the network lag between the database and your logics server +

Usually database operations can't be executed as parallel inside one context/transaction. +That is an anti-pattern in general: the network lag between database and your logics server is probably the bottleneck of your system. So, in this order:

  1. Try to execute your business logics as database queries, as one big query.
  2. -
  3. Or sometimes, not often, load eagerly data with a single query and process it in the logics server.
  4. -
  5. Avoid cases in which you create as many queries as your collection has items.
  6. +
  7. Or sometimes, not often, load eagerly data with single query and process it in the logics server.
  8. +
  9. Avoid case that you create as many queries as your collection has items.

So if you are still in the worst case, 3, and have to deal with a List>, you cannot say Async.Parallel as that may corrupt your data. To avoid custom imperative while-loops, @@ -334,9 +334,9 @@

W

As with all the technical choices, there are drawbacks to consider.

  • Your codebase will be more complex. This will slow down your development speed if your developers are not F#-professionals.
  • -
  • You must use other technologies supporting async or .NET tasks, like WCF or SignalR. There is no point in doing async and then still using RunSynchronously at the end.
  • -
  • You may consider async as premature optimization. Starting without async and converting all later is an option, although your APIs must change.
  • -
  • Async and transactions are a problem with the Mono environment.
  • +
  • You have to use other technologies that support async or .NET tasks, like WCF or SignalR. There is no point of doing async and then still using RunSynchronously at the end.
  • +
  • You may consider async as premature optimization. Starting without async and converting all later is an option, although your APIs will have to change.
  • +
  • Async and transactions is a problem with Mono environment.
  • Async will make your error stacktraces harder to read: You may be used to search your functions from the stacktrace to spot any problems. With async, you don't have your own code in the error-stack. At the time of e.g. SQL-exception, there is no thread waiting, your code is not actively running, there is no stack.
@@ -412,37 +412,37 @@

W
val id: Guid
Multiple items
[<Struct>] type Guid = - new: b: byte array -> unit + 6 overloads + new: b: byte array -> unit + 5 overloads member CompareTo: value: Guid -> int + 1 overload member Equals: g: Guid -> bool + 1 overload member GetHashCode: unit -> int - member ToByteArray: unit -> byte array + 1 overload + member ToByteArray: unit -> byte array member ToString: unit -> string + 2 overloads - member TryFormat: utf8Destination: Span<byte> * bytesWritten: byref<int> * ?format: ReadOnlySpan<char> -> bool + 1 overload - member TryWriteBytes: destination: Span<byte> -> bool + 1 overload - static member (<) : left: Guid * right: Guid -> bool - static member (<=) : left: Guid * right: Guid -> bool - ...

--------------------
Guid ()
Guid(b: byte array) : Guid
Guid(b: ReadOnlySpan<byte>) : Guid
Guid(g: string) : Guid
Guid(b: ReadOnlySpan<byte>, bigEndian: bool) : Guid
Guid(a: int, b: int16, c: int16, d: byte array) : Guid
Guid(a: int, b: int16, c: int16, d: byte, e: byte, f: byte, g: byte, h: byte, i: byte, j: byte, k: byte) : Guid
Guid(a: uint32, b: uint16, c: uint16, d: byte, e: byte, f: byte, g: byte, h: byte, i: byte, j: byte, k: byte) : Guid
+ member TryFormat: destination: Span<char> * charsWritten: byref<int> * ?format: ReadOnlySpan<char> -> bool + member TryWriteBytes: destination: Span<byte> -> bool + static member (<>) : a: Guid * b: Guid -> bool + static member (=) : a: Guid * b: Guid -> bool + ...
<summary>Represents a globally unique identifier (GUID).</summary>

--------------------
Guid ()
Guid(b: byte array) : Guid
Guid(b: ReadOnlySpan<byte>) : Guid
Guid(g: string) : Guid
Guid(a: int, b: int16, c: int16, d: byte array) : Guid
Guid(a: int, b: int16, c: int16, d: byte, e: byte, f: byte, g: byte, h: byte, i: byte, j: byte, k: byte) : Guid
Guid(a: uint32, b: uint16, c: uint16, d: byte, e: byte, f: byte, g: byte, h: byte, i: byte, j: byte, k: byte) : Guid
Multiple items
type Task = interface IAsyncResult interface IDisposable new: action: Action -> unit + 7 overloads - member ConfigureAwait: continueOnCapturedContext: bool -> ConfiguredTaskAwaitable + 1 overload + member ConfigureAwait: continueOnCapturedContext: bool -> ConfiguredTaskAwaitable member ContinueWith: continuationAction: Action<Task,obj> * state: obj -> Task + 19 overloads member Dispose: unit -> unit member GetAwaiter: unit -> TaskAwaiter member RunSynchronously: unit -> unit + 1 overload member Start: unit -> unit + 1 overload - member Wait: unit -> unit + 5 overloads - ...

--------------------
type Task<'TResult> = + member Wait: unit -> unit + 4 overloads + ...
<summary>Represents an asynchronous operation.</summary>

--------------------
type Task<'TResult> = inherit Task new: ``function`` : Func<obj,'TResult> * state: obj -> unit + 7 overloads - member ConfigureAwait: continueOnCapturedContext: bool -> ConfiguredTaskAwaitable<'TResult> + 1 overload + member ConfigureAwait: continueOnCapturedContext: bool -> ConfiguredTaskAwaitable<'TResult> member ContinueWith: continuationAction: Action<Task<'TResult>,obj> * state: obj -> Task + 19 overloads member GetAwaiter: unit -> TaskAwaiter<'TResult> - member WaitAsync: cancellationToken: CancellationToken -> Task<'TResult> + 4 overloads + member WaitAsync: timeout: TimeSpan -> Task<'TResult> + 2 overloads member Result: 'TResult - static member Factory: TaskFactory<'TResult>

--------------------
Task(action: Action) : Task
Task(action: Action, cancellationToken: Threading.CancellationToken) : Task
Task(action: Action, creationOptions: TaskCreationOptions) : Task
Task(action: Action<obj>, state: obj) : Task
Task(action: Action, cancellationToken: Threading.CancellationToken, creationOptions: TaskCreationOptions) : Task
Task(action: Action<obj>, state: obj, cancellationToken: Threading.CancellationToken) : Task
Task(action: Action<obj>, state: obj, creationOptions: TaskCreationOptions) : Task
Task(action: Action<obj>, state: obj, cancellationToken: Threading.CancellationToken, creationOptions: TaskCreationOptions) : Task

--------------------
Task(``function`` : Func<'TResult>) : Task<'TResult>
Task(``function`` : Func<obj,'TResult>, state: obj) : Task<'TResult>
Task(``function`` : Func<'TResult>, cancellationToken: Threading.CancellationToken) : Task<'TResult>
Task(``function`` : Func<'TResult>, creationOptions: TaskCreationOptions) : Task<'TResult>
Task(``function`` : Func<obj,'TResult>, state: obj, cancellationToken: Threading.CancellationToken) : Task<'TResult>
Task(``function`` : Func<obj,'TResult>, state: obj, creationOptions: TaskCreationOptions) : Task<'TResult>
Task(``function`` : Func<'TResult>, cancellationToken: Threading.CancellationToken, creationOptions: TaskCreationOptions) : Task<'TResult>
Task(``function`` : Func<obj,'TResult>, state: obj, cancellationToken: Threading.CancellationToken, creationOptions: TaskCreationOptions) : Task<'TResult>
+ static member Factory: TaskFactory<'TResult>
<summary>Represents an asynchronous operation that can return a value.</summary>
<typeparam name="TResult">The type of the result produced by this <see cref="T:System.Threading.Tasks.Task`1" />.</typeparam>


--------------------
Task(action: Action) : Task
Task(action: Action, cancellationToken: Threading.CancellationToken) : Task
Task(action: Action, creationOptions: TaskCreationOptions) : Task
Task(action: Action<obj>, state: obj) : Task
Task(action: Action, cancellationToken: Threading.CancellationToken, creationOptions: TaskCreationOptions) : Task
Task(action: Action<obj>, state: obj, cancellationToken: Threading.CancellationToken) : Task
Task(action: Action<obj>, state: obj, creationOptions: TaskCreationOptions) : Task
Task(action: Action<obj>, state: obj, cancellationToken: Threading.CancellationToken, creationOptions: TaskCreationOptions) : Task

--------------------
Task(``function`` : Func<'TResult>) : Task<'TResult>
Task(``function`` : Func<obj,'TResult>, state: obj) : Task<'TResult>
Task(``function`` : Func<'TResult>, cancellationToken: Threading.CancellationToken) : Task<'TResult>
Task(``function`` : Func<'TResult>, creationOptions: TaskCreationOptions) : Task<'TResult>
Task(``function`` : Func<obj,'TResult>, state: obj, cancellationToken: Threading.CancellationToken) : Task<'TResult>
Task(``function`` : Func<obj,'TResult>, state: obj, creationOptions: TaskCreationOptions) : Task<'TResult>
Task(``function`` : Func<'TResult>, cancellationToken: Threading.CancellationToken, creationOptions: TaskCreationOptions) : Task<'TResult>
Task(``function`` : Func<obj,'TResult>, state: obj, cancellationToken: Threading.CancellationToken, creationOptions: TaskCreationOptions) : Task<'TResult>
val async: AsyncBuilder
val transaction: Transactions.TransactionScope
namespace System.Transactions
@@ -450,12 +450,12 @@

W interface IDisposable new: unit -> unit + 13 overloads member Complete: unit -> unit - member Dispose: unit -> unit

--------------------
Transactions.TransactionScope() : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(transactionToUse: Transactions.Transaction) : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(asyncFlowOption: Transactions.TransactionScopeAsyncFlowOption) : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(scopeOption: Transactions.TransactionScopeOption) : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(transactionToUse: Transactions.Transaction, scopeTimeout: TimeSpan) : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(transactionToUse: Transactions.Transaction, asyncFlowOption: Transactions.TransactionScopeAsyncFlowOption) : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(scopeOption: Transactions.TransactionScopeOption, scopeTimeout: TimeSpan) : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(scopeOption: Transactions.TransactionScopeOption, transactionOptions: Transactions.TransactionOptions) : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(scopeOption: Transactions.TransactionScopeOption, asyncFlowOption: Transactions.TransactionScopeAsyncFlowOption) : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(transactionToUse: Transactions.Transaction, scopeTimeout: TimeSpan, interopOption: Transactions.EnterpriseServicesInteropOption) : Transactions.TransactionScope
   (+0 other overloads) + member Dispose: unit -> unit
<summary>Makes a code block transactional. This class cannot be inherited.</summary>

--------------------
Transactions.TransactionScope() : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(transactionToUse: Transactions.Transaction) : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(asyncFlowOption: Transactions.TransactionScopeAsyncFlowOption) : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(scopeOption: Transactions.TransactionScopeOption) : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(transactionToUse: Transactions.Transaction, scopeTimeout: TimeSpan) : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(transactionToUse: Transactions.Transaction, asyncFlowOption: Transactions.TransactionScopeAsyncFlowOption) : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(scopeOption: Transactions.TransactionScopeOption, scopeTimeout: TimeSpan) : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(scopeOption: Transactions.TransactionScopeOption, transactionOptions: Transactions.TransactionOptions) : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(scopeOption: Transactions.TransactionScopeOption, asyncFlowOption: Transactions.TransactionScopeAsyncFlowOption) : Transactions.TransactionScope
   (+0 other overloads)
Transactions.TransactionScope(transactionToUse: Transactions.Transaction, scopeTimeout: TimeSpan, interopOption: Transactions.EnterpriseServicesInteropOption) : Transactions.TransactionScope
   (+0 other overloads)
[<Struct>] type TransactionScopeAsyncFlowOption = | Suppress = 0 - | Enabled = 1
-
field Transactions.TransactionScopeAsyncFlowOption.Enabled: Transactions.TransactionScopeAsyncFlowOption = 1
+ | Enabled = 1
<summary>Specifies whether transaction flow across thread continuations is enabled for <see cref="T:System.Transactions.TransactionScope" />.</summary> +
field Transactions.TransactionScopeAsyncFlowOption.Enabled: Transactions.TransactionScopeAsyncFlowOption = 1
<summary>Specifies that transaction flow across thread continuations is enabled.</summary>
val context: SqlDataProvider<...>.dataContext
SqlDataProvider<...>.GetDataContext() : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider using the static parameters</summary>
   (+0 other overloads)
SqlDataProvider<...>.GetDataContext(selectOperations: SelectOperations) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider using the static parameters</summary><param name='selectOperations'>Execute select-clause operations in SQL database rather than .NET-side.</param>
   (+0 other overloads)
SqlDataProvider<...>.GetDataContext(commandTimeout: int) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider using the static parameters</summary><param name='commandTimeout'>SQL command timeout. Maximum time for single SQL-command in seconds.</param>
   (+0 other overloads)
SqlDataProvider<...>.GetDataContext(transactionOptions: Transactions.TransactionOptions) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider using the static parameters</summary><param name='transactionOptions'>TransactionOptions for the transaction created on SubmitChanges.</param>
   (+0 other overloads)
SqlDataProvider<...>.GetDataContext(connectionString: string) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider using the static parameters</summary><param name='connectionString'>The database runtime connection string</param>
   (+0 other overloads)
SqlDataProvider<...>.GetDataContext(connectionString: string, selectOperations: SelectOperations) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider using the static parameters</summary><param name='connectionString'>The database runtime connection string</param><param name='selectOperations'>Execute select-clause operations in SQL database rather than .NET-side.</param>
   (+0 other overloads)
SqlDataProvider<...>.GetDataContext(transactionOptions: Transactions.TransactionOptions, commandTimeout: int) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider using the static parameters</summary><param name='transactionOptions'>TransactionOptions for the transaction created on SubmitChanges.</param><param name='commandTimeout'>SQL command timeout. Maximum time for single SQL-command in seconds.</param>
   (+0 other overloads)
SqlDataProvider<...>.GetDataContext(connectionString: string, commandTimeout: int) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider using the static parameters</summary><param name='connectionString'>The database runtime connection string</param><param name='commandTimeout'>SQL command timeout. Maximum time for single SQL-command in seconds.</param>
   (+0 other overloads)
SqlDataProvider<...>.GetDataContext(connectionString: string, transactionOptions: Transactions.TransactionOptions) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider using the static parameters</summary><param name='connectionString'>The database runtime connection string</param><param name='transactionOptions'>TransactionOptions for the transaction created on SubmitChanges.</param>
   (+0 other overloads)
SqlDataProvider<...>.GetDataContext(connectionString: string, resolutionPath: string) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider using the static parameters</summary><param name='connectionString'>The database runtime connection string</param><param name='resolutionPath'>The location to look for dynamically loaded assemblies containing database vendor specific connections and custom types. Types used in desing-time: If no better clue, prefer .NET Standard 2.0 versions. Semicolon to separate multiple.</param>
   (+0 other overloads)
val fetched: obj seq
@@ -483,18 +483,18 @@

W
val entity: obj
Multiple items
[<Struct>] type DateTime = - new: date: DateOnly * time: TimeOnly -> unit + 16 overloads + new: year: int * month: int * day: int -> unit + 10 overloads member Add: value: TimeSpan -> DateTime member AddDays: value: float -> DateTime member AddHours: value: float -> DateTime - member AddMicroseconds: value: float -> DateTime member AddMilliseconds: value: float -> DateTime member AddMinutes: value: float -> DateTime member AddMonths: months: int -> DateTime member AddSeconds: value: float -> DateTime member AddTicks: value: int64 -> DateTime - ...

--------------------
DateTime ()
   (+0 other overloads)
DateTime(ticks: int64) : DateTime
   (+0 other overloads)
DateTime(date: DateOnly, time: TimeOnly) : DateTime
   (+0 other overloads)
DateTime(ticks: int64, kind: DateTimeKind) : DateTime
   (+0 other overloads)
DateTime(date: DateOnly, time: TimeOnly, kind: DateTimeKind) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, calendar: Globalization.Calendar) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, kind: DateTimeKind) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, calendar: Globalization.Calendar) : DateTime
   (+0 other overloads)
-
property DateTime.UtcNow: DateTime with get
+ member AddYears: value: int -> DateTime + ...
<summary>Represents an instant in time, typically expressed as a date and time of day.</summary>

--------------------
DateTime ()
   (+0 other overloads)
DateTime(ticks: int64) : DateTime
   (+0 other overloads)
DateTime(ticks: int64, kind: DateTimeKind) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, calendar: Globalization.Calendar) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, kind: DateTimeKind) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, calendar: Globalization.Calendar) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, millisecond: int) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, millisecond: int, kind: DateTimeKind) : DateTime
   (+0 other overloads) +
property DateTime.UtcNow: DateTime with get
<summary>Gets a <see cref="T:System.DateTime" /> object that is set to the current date and time on this computer, expressed as the Coordinated Universal Time (UTC).</summary>
<returns>An object whose value is the current UTC date and time.</returns>
val box: value: 'T -> obj
SqlDataProvider<...>.dataContext.SubmitUpdatesAsync() : Task
<summary>Save changes to data-source. May throws errors: Use Async.Catch and to deal with non-saved items use GetUpdates() and ClearUpdates().</summary>
Transactions.TransactionScope.Complete() : unit
diff --git a/core/composable.html b/core/composable.html index 808dbfe9..beb8de4c 100644 --- a/core/composable.html +++ b/core/composable.html @@ -70,7 +70,7 @@
@@ -250,23 +250,23 @@

SQLProvider

Composable Queries

Definition of Composable Queries

-

Composable methods are those you can chain to build the desired functionality out of smaller parts. -By passing functions as parameters, you can generate higher-order query operations. -Therefore, a composable query means you can do logics to compose just one database-SQL-query from multiple queryables. +

Basicly composable methods are those that you can chain together to build the desired functionality out of smaller parts. +By passing functions as parameters you are able to generate higher-order query operations. +Therefore composable query means that you can do logics to compose just one database-SQL-query from multiple queryables. By using composable queries you can shorten the Database transactions and keep the connection open a minimum of time.

One common anti-pattern is a trial to solve all the problems in the world by a single code. -So when you use this kind of feature to achieve "common logics", keep the software's maintainability in mind. +So when you use this kind of features to achieve "common logics", keep in mind the software mainainability. One solution is to add a database view and query that from SQLProvider.

Generate composable queries by using Linq IQueryable

-

With composable queries, you can combine two queries in multiple ways, and one query can be used as the building block for the other query. -To see how this works, let's look at a simple query:

+

With composable queries you can combine two queries in multiple ways, and one query can be used as the building block for the other query. +To see how this works, let’s look at a simple query:

let query1 =
     query {
       for customers  in ctx.Main.Customers do
       where (customers.ContactTitle = "USA")
       select (customers)}
 
-

The variable that is returned from the query is sometimes called a computation. If you write to evaluate +

The variable that is returned from the query is sometimes called a computation. If you write evaluate (e.g. a foreach loop or |> Seq.toList) and display the address field from the customers returned by this computation, you see the following output:

GREAL|Great Lakes Food Market|Howard Snyder|Marketing Manager|2732 Baker Blvd.|Eugene|OR|97403|USA|(503) 555-7555|
@@ -301,13 +301,13 @@ 

Generate composable queries by using .NET LINQ functions with IQueryable.

-

The difference between IEnumerable and IQueryable is basically that IEnumerable is executed in the IL while IQueryable can be translated as an expression tree to some other context (like a database query). -They are both lazy by nature, meaning they aren't evaluated until you enumerate the results.

-

Here is an example:

-

First, you have to add .NET LINQ:

+

The difference between IEnumerable and IQueryable is basically that IEnumerable is executed in the IL while IQueryable can be translated as en expression tree to some other context (like a database query). +They are both lazy by nature, meaning they aren’t evaluated until you enumerate over the results.

+

Here an example:

+

First you have to add .NET LINQ:

open System.Linq
 
-

Then, you can define a composable query outside the main query

+

Then you can define a composable query outside the main query

type CustomersEntity = sql.dataContext.``main.CustomersEntity``
 
 let companyNameFilter inUse =
@@ -322,9 +322,9 @@ 

myFilter2 queryable

-

(Let's assume that your inUse parameter is some complex data: +

(Let's asume that your inUse some complex data: E.g. Your sub-queries would come from other functions. Basic booleans you can just include to your where-clause)

-

Then, you can create the main query

+

Then you can create the main query

let query1 =
     query {
         for customers  in ctx.Main.Customers do
@@ -335,9 +335,9 @@ 

let res = companyNameFilter true query1 |> Seq.toArray

Generate composable queries by using FSharp.Linq.ComposableQuery

-

The SQLProvider also supports composable queries by integrating the following library FSharpLinqComposableQuery. +

The SQLProvider also supports composable queries by integrating following library FSharpLinqComposableQuery. You can read more about that library here: FSharp.Linq.ComposableQuery

-

Because it is implemented in the SQLProvider, you don't need to add FSharpComposableQuery in your script.

+

Because it is implemented in the SQLProvider you dont need to add FSharpComposableQuery in your script.

Example for using FSharpComposableQuery

let qry1 =
     query { for u in dbContext.Users do
@@ -383,11 +383,11 @@ 

select (x.GetColumn<string> "CustomerId") } |> Seq.head

-

However, this is not recommended as one of the SQLProvider's key benefits is strong typing.

+

However this is not recommended as one of the SQLProvider's key benefits is strong typing.

Generate composable queries from quotations

You can also construct composable queries using the F# quotation mechanism. For example, if you need to select a filter function at runtime, you could write the -filters as quotations, and then include them in a query like this:

+filters as quotations, and then include them into query like that:

let johnFilter = <@ fun (employee : sql.dataContext.``main.EmployeesEntity``) -> employee.FirstName = "John" @>
 let pamFilter = <@ fun (employee : sql.dataContext.``main.EmployeesEntity``) -> employee.FirstName = "Pam" @>
 
@@ -399,7 +399,7 @@ 

select emp } |> Seq.toArray

-

Quotations are AST representations that the Linq-to-SQL translator can use.

+

Quotations are AST representations which the Linq-to-SQL translator can use.

val x: obj
type CustomersEntity = SqlDataProvider<...>.dataContext.main.CustomersEntity
diff --git a/core/constraints-relationships.html b/core/constraints-relationships.html index da155571..a4638927 100644 --- a/core/constraints-relationships.html +++ b/core/constraints-relationships.html @@ -70,7 +70,7 @@
@@ -250,12 +250,12 @@

SQLProvider

Constraints & Relationships

A typical relational database will have many connected tables and views -through foreign key constraints. The SQL provider can show you these +through foreign key constraints. The SQL provider is able to show you these constraints on entities. They appear as properties named the same as the constraint in the database.

You can gain access to these child or parent entities by simply enumerating the property in question.

-

While SQL provider automatically generates getters from foreign-key relations, it doesn't have (yet) any automatic support for creating a properly ordered graph of related entities in a single transaction. However, SQL provider submits entities to a database in the same order they were created. As long as you create entities in their dependency order, you won't get foreign-key constraint violations.

+

While SQL provider automatically generates getters from foreign key relations, it doesn't have (yet) any automatic support for creating a properly ordered graph of related entities in a single transaction. However, SQL provider submits entities to a database in the same order they were created, which means that as long as you create entities in their dependency order, you won't get foreign key constraint violations.

diff --git a/core/contributing.html b/core/contributing.html index 585c8962..b6416b61 100644 --- a/core/contributing.html +++ b/core/contributing.html @@ -7,17 +7,17 @@ - - - How to contribute + <title>How to make a contribution | SQLProvider @@ -70,7 +70,7 @@ @@ -248,36 +248,36 @@

SQLProvider

-

How to contribute

+

How to make a contribution

This is how you can make a "pull request", to suggest your modifications to be accepted to the code base.

1. Download or clone the repository to your computer.

(Or take git pull if you already have the repository.)

Download

You need to get the .git folder inside the repository. -If the download doesn't work, you can use clone, which creates a separate folder and downloads the repository:

+If the download doesn't work you can use clone, which creates a separate folder and downloads the repository:

   git clone https://github.com/fsprojects/SQLProvider.git
 

2. Edit and Commit

Here are some tech details.

-

Do the modifications and check the build and tests are working. Commit the changes to your local repository.

+

Do the modifications, check the build and tests are working. Commit the modifications to your local repository.

3. Fork the GitHub repository.

This will "copy" the repository for your account.

Fork

4. Get Your Url

-

In GitHub, go to your copy of the repository (under your profile, Repositories-tab) and under Download, get the repository URL, e.g. https://github.com/myname/SqlProvider.git

+

In GitHub, go to your copy of the repository (under your profile, Repositories-tab) and under Download, get the repository url, e.g. https://github.com/myname/SqlProvider.git

5. Add a Remote

-

With command line, add a remote to your repository URL:

+

With command line, add a remote to your repository url:

   git remote add myrepo https://github.com/myname/SqlProvider.git
 
-

Use the name you want for the repository and note your GitHub account in the URL. You can check the remotes with git remote -v.

+

Use the name you want for repository and note your GitHub account in the url. You can check the remotes with git remote -v.

6. Push to Your Remote

Push the latest version to your repository with git push myrepo. You should see the modifications in GitHub under your repository.

7. Create a Pull Request

-

In GitHub, under your repository, press the Create pull request -button. By default, everything should be correct: The base-fork is the one to which you want to send the modifications, and the head fork is your fork, so follow the wizard.

+

In GitHub under your repository press the Create pull request -button. By default, everything should be correct: Base-fork is the one where you want to send the modifications and head fork is your fork, so follow the wizard.

PullRequest

8. Done.

-

Your pull request should be visible under the "Pull requests" -tab in the original repository. When you do more commits, you can ignore parts 3, 4 and 5, they has to be done just once.

+

Your pull request should be visible under "Pull requests" -tab in original repository. When you do more commits, you can ignore parts 3, 4 and 5, they has to be done just once.

The process

@@ -287,8 +287,8 @@

8. Done.

On this page

  • - - How to contribute + + How to make a contribution
  • diff --git a/core/crud.html b/core/crud.html index 6e0b0cf0..de5ed299 100644 --- a/core/crud.html +++ b/core/crud.html @@ -70,7 +70,7 @@
  • @@ -279,7 +279,7 @@

    CRUD sample

    Submit updates to the database

    ctx.SubmitUpdates()
     
    -

    After updating, your item (row) will have the Id property.

    +

    After updating your item (row) will have the Id property.

    You can also create with the longer ``Create(...)``(parameters)-method like this:

    let emp = ctx.Main.Employees.``Create(FirstName, LastName)``("Don", "Syme")
     
    @@ -364,7 +364,7 @@

    CRUD sample

    updateEmployee john updateEmployee' john
-

Finally it is also possible to specify a seq of string * obj, which is precisely the +

Finally it is also possible to specify a seq of string * obj which is exactly the output of .ColumnValues:

employees 
     |> Seq.map (fun x ->
@@ -377,7 +377,7 @@ 

CRUD sample

ctx.GetUpdates() // Get the updates ctx.SubmitUpdates() // no record is added
-

Inside SubmitUpdate the transaction is created by default TransactionOption, which is Required: Shares a transaction, if one exists, and creates a new transaction if necessary. So, if you have query-operation before SubmitUpdates, you should create your own transaction to wrap these into the same transaction.

+

Inside SubmitUpdate the transaction is created by default TransactionOption, which is Required: Shares a transaction, if one exists, and creates a new transaction if necessary. So e.g. if you have query-operation before SubmitUpdates, you may want to create your own transaction to wrap these to the same transaction.

SQLProvider also supports async database operations:

ctx.SubmitUpdatesAsync() // |> Async.AwaitTask
         
@@ -401,7 +401,7 @@ 

OnConflict

ctx.SubmitUpdates()

Delete-query for multiple items

-

To delete many items from a database table, DELETE FROM [dbo].[EMPLOYEES] WHERE (...), there is a way, although we don't recommend deleting items from a database. Instead, you should consider a deletion-flag column. You should also back up your database before trying this. Note that changes are immediately saved to the database even if you don't call ctx.SubmitUpdates().

+

If you want to delete many items from a database table, DELETE FROM [dbo].[EMPLOYEES] WHERE (...), there is a way, although we don't recommend deleting items from a database. Instead you should consider a deletion-flag column. And you should backup your database before even trying this. Note that changes are immediately saved to the database even if you don't call ctx.SubmitUpdates().

query {
     for c in ctx.Dbo.Employees do
     where (...)
@@ -459,7 +459,7 @@ 

emp.SetColumn("BirthDate", DateTime.UtcNow.ToString("yyyy-MM-dd HH\:mm\:ss") |> box) ctx.SubmitUpdates()

-

SetColumn takes an object, giving you more control over the type serialization.

+

SetColumn takes object, so you have more control over the type serialization.

Multiple items
[<Struct>] type DateTime = - new: date: DateOnly * time: TimeOnly -> unit + 16 overloads + new: year: int * month: int * day: int -> unit + 10 overloads member Add: value: TimeSpan -> DateTime member AddDays: value: float -> DateTime member AddHours: value: float -> DateTime - member AddMicroseconds: value: float -> DateTime member AddMilliseconds: value: float -> DateTime member AddMinutes: value: float -> DateTime member AddMonths: months: int -> DateTime member AddSeconds: value: float -> DateTime member AddTicks: value: int64 -> DateTime - ...

--------------------
DateTime ()
   (+0 other overloads)
DateTime(ticks: int64) : DateTime
   (+0 other overloads)
DateTime(date: DateOnly, time: TimeOnly) : DateTime
   (+0 other overloads)
DateTime(ticks: int64, kind: DateTimeKind) : DateTime
   (+0 other overloads)
DateTime(date: DateOnly, time: TimeOnly, kind: DateTimeKind) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, calendar: Globalization.Calendar) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, kind: DateTimeKind) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, calendar: Globalization.Calendar) : DateTime
   (+0 other overloads)
-
property DateTime.Now: DateTime with get
+ member AddYears: value: int -> DateTime + ...
<summary>Represents an instant in time, typically expressed as a date and time of day.</summary>

--------------------
DateTime ()
   (+0 other overloads)
DateTime(ticks: int64) : DateTime
   (+0 other overloads)
DateTime(ticks: int64, kind: DateTimeKind) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, calendar: Globalization.Calendar) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, kind: DateTimeKind) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, calendar: Globalization.Calendar) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, millisecond: int) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, millisecond: int, kind: DateTimeKind) : DateTime
   (+0 other overloads)
+
property DateTime.Now: DateTime with get
<summary>Gets a <see cref="T:System.DateTime" /> object that is set to the current date and time on this computer, expressed as the local time.</summary>
<returns>An object whose value is the current local date and time.</returns>
val row: SqlDataProvider<...>.dataContext.main.OrdersEntity
SqlDataProvider<...>.dataContext.mainSchema.main.Orders.Create() : SqlDataProvider<...>.dataContext.main.OrdersEntity
SqlDataProvider<...>.dataContext.mainSchema.main.Orders.Create(data: Collections.Generic.IEnumerable<string * obj>) : SqlDataProvider<...>.dataContext.main.OrdersEntity
<summary>Item array of database columns: </summary>
@@ -649,11 +649,7 @@

+ | DoNothing
val box: value: 'T -> obj
val bdate: DateTime
-
DateTime.Parse(s: string) : DateTime
DateTime.Parse(s: string, provider: IFormatProvider) : DateTime
DateTime.Parse(s: ReadOnlySpan<char>, provider: IFormatProvider) : DateTime
DateTime.Parse(s: string, provider: IFormatProvider, styles: Globalization.DateTimeStyles) : DateTime
DateTime.Parse(s: ReadOnlySpan<char>, ?provider: IFormatProvider, ?styles: Globalization.DateTimeStyles) : DateTime
+
DateTime.Parse(s: string) : DateTime
DateTime.Parse(s: string, provider: IFormatProvider) : DateTime
DateTime.Parse(s: string, provider: IFormatProvider, styles: Globalization.DateTimeStyles) : DateTime
DateTime.Parse(s: ReadOnlySpan<char>, ?provider: IFormatProvider, ?styles: Globalization.DateTimeStyles) : DateTime
DateTime.AddYears(value: int) : DateTime
-
property DateTime.UtcNow: DateTime with get
+
property DateTime.UtcNow: DateTime with get
<summary>Gets a <see cref="T:System.DateTime" /> object that is set to the current date and time on this computer, expressed as the Coordinated Universal Time (UTC).</summary>
<returns>An object whose value is the current UTC date and time.</returns>
val failwith: message: string -> 'T
DateTime.ToString() : string
DateTime.ToString(format: string) : string
DateTime.ToString(provider: IFormatProvider) : string
DateTime.ToString(format: string, provider: IFormatProvider) : string
val others: string * obj
diff --git a/core/general.html b/core/general.html index 10d12d33..7f122bf8 100644 --- a/core/general.html +++ b/core/general.html @@ -67,7 +67,7 @@
@@ -245,11 +245,11 @@

SQLProvider

-

To use the type provider, you must first create a type alias.

-

In this declaration, you can pass various pieces of information known +

To use the type provider you must first create a type alias.

+

In this declaration you are able to pass various pieces of information known as static parameters to initialize properties such as the connection string and database vendor type that you are connecting to.

-

In the following examples, a SQLite database will be used. You can read in +

In the following examples a SQLite database will be used. You can read in more detail about the available static parameters in other areas of the documentation.

type sql  = SqlDataProvider<
@@ -260,12 +260,12 @@ 

SQLProvider

CaseSensitivityChange = Common.CaseSensitivityChange.ORIGINAL >
-

Now we have a type sqlrepresenting the SQLite database provided in -the connectionString parameter. To start exploring the database's +

Now we have a type sql that represents the SQLite database provided in +the connectionString parameter. In order to start exploring the database's schema and reading its data, you create a DataContext value.

let ctx = sql.GetDataContext()
 
-

If you want to use non-literal connectionString at runtime (e.g. encrypted production +

If you want to use non-literal connectionString at runtime (e.g. crypted production passwords), you can pass your runtime connectionString parameter to GetDataContext:

let connectionString2 = "(insert runtime connection here)"
 let ctx2 = sql.GetDataContext connectionString2
@@ -285,25 +285,25 @@ 

SQLProvider

Each property is correctly typed depending on the database column definitions. In this example, firstCustomer.ContactName is a string.

-

Most databases support some comments/descriptions/remarks to +

Most of the databases support some kind of comments/descriptions/remarks to tables and columns for documentation purposes. These descriptions are fetched to tooltips for the tables and columns.

Constraints and Relationships

A typical relational database will have many connected tables and views -through foreign key constraints. The SQL provider can show you these +through foreign key constraints. The SQL provider is able to show you these constraints on entities. They appear as properties named the same as the constraint in the database.

You can gain access to these child or parent entities by simply enumerating the property in question.

let orders = firstCustomer.``main.Orders by CustomerID`` |> Seq.toArray
 
-

orders now contain all the orders belonging to firstCustomer. You will +

orders now contains all the orders belonging to firstCustomer. You will see the orders type is an array of [Main].[Orders]Entity indicating the resulting entities are from the [main].[Orders] table in the database. -If you hover over FK_Orders_0_0, intellisense will display information -about the constraint in question, including the names of the tables involved +If you hover over FK_Orders_0_0 intellisense will display information +about the constraint in question including the names of the tables involved and the key names.

-

Behind the scenes, the SQL provider has automatically constructed and executed +

Behind the scenes the SQL provider has automatically constructed and executed a relevant query using the entity's primary key.

Basic Querying

The SQL provider supports LINQ queries using F#'s query expression syntax.

@@ -324,7 +324,7 @@

Basic Queryin

The above example is identical to the query that was executed when ctx.[main].[Customers] |> Seq.toArray was evaluated.

-

You can extend this basic query to filter criteria by introducing +

You can extend this basic query include to filter criteria by introducing one or more where clauses

let filteredQuery = 
     query { 
@@ -364,12 +364,12 @@ 

Basic Queryin } |> Seq.toArray

-

These queries have identical results; the only difference is that one +

Both of these queries have identical results, the only difference is that one requires explicit knowledge of which tables join where and how, and the other doesn't. You might have noticed the select expression has now changed to (customer, order). As you may expect, this will return an array of tuples where the first item is a [Main].[Customers]Entity and the second a [Main].[Orders]Entity. -Often, you will not be interested in selecting entire entities from the database. +Often you will not be interested in selecting entire entities from the database. Changing the select expression to use the entities' properties will cause the SQL provider to select only the columns you have asked for, which is an important optimization.

@@ -382,8 +382,8 @@

Basic Queryin } |> Seq.toArray -

The results of this query will return the name, order date and shipping address -only. By doing this, you no longer have access to entity types. +

The results of this query will return the name, order date and ship address +only. By doing this you no longer have access to entity types. The SQL provider supports various other query keywords and features that you can read about elsewhere in this documentation.

Individuals

@@ -391,16 +391,16 @@

Individuals

let BERGS = ctx.Main.Customers.Individuals.BERGS
 
-

Every table and view has an Individuals property. When you press the dot on +

Every table and view has an Individuals property. When you press dot on this property, intellisense will display a list of the data in that table, using whatever the primary key is as the text for each one. In this case, the primary key for [main].[Customers] is a string, and I have selected one named BERGS. You will see the resulting type is [main].[Customers]Entity.

-

The primary key is not usually very useful for identifying data, however, so -in addition to this, you will see a series of properties named "As X" where X +

The primary key is not usually very useful for identifying data however, so +in addition to this you will see a series of properties named "As X" where X is the name of a column in the table. -When you press "." on one of these properties, the data is re-projected to you +When you press . on one of these properties, the data is re-projected to you using both the primary key and the text of the column you have selected.

let christina = ctx.Main.Customers.Individuals.``As ContactName``.``BERGS, Christina Berglund``
 
@@ -412,9 +412,9 @@

DataContext

The connection itself is not stored and reused with an instance of the data context. The data context creates a connection when you execute a query or when you call SubmitUpdates(). In terms of transactions, the data context object tracks (full) -entities that were retrieved using it via queries or Individuals and manage their +entities that were retrieved using it via queries or Individuals and manages their states. Upon calling SubmitUpdates(), all entities modified/created that belong to -that data context are wrapped in a single transaction scope. Then a connection +that data context are wrapped in a single transaction scope, and then a connection is created and thus enlisted into the transaction.

*#Important*: The database schema (SQLProvider's understanding of the structure of tables, columns, names, types, etc of your database @@ -422,11 +422,11 @@

DataContext

What does that entail?

A. Once SQLProvider gets a "mental model" of your database (the schema), that is what is used for any intellisense/completion suggestions for the rest of your IDE session.

-
This is a fantastic feature because it means you're not assaulting your database with a 
+
This is a fantastic feature, because it means that you're not assaulting your database with a 
 new "What are you like?" query on EVERY SINGLE KEYSTROKE. 
 
-But what if the database changes? SQLProvider will NOT see your change because its source of truth is
-that locally cached schema snapshot it took at right when it started, and that snapshot will persist until
+But what if the database changes? SQLProvider will NOT see your change because it's source of truth is
+that locally cached schema snapshot it took right when it started, and that snapshot will persist until
 one of 2 things happens: 
 
 1.  A restart of your Editor/IDE. 
@@ -450,24 +450,24 @@ 

DataContext

and they actually show up as ``Design Time Commands`` in the completion. Select that, and then "dot into" it afterwards, then under that is ClearDatabaseSchemaCache. - Then, after that typing in a "." will actually RUN the command, thereby clearing the cache. + Then after that typing in a "." will actualy RUN the command, thereby clearing the cache.

B. LAZY evaluation means that where you save the database schema in your code matters. Do not call the "Design Time Command" SaveContextSchema at the top of your code. FSharp is evaluated -from top to bottom, so if you call SaveContextSchema at the top before you ask for specific columns in your code, +top to bottom, and so if you call SaveContextSchema at the top, before you ask for specific columns in your code, you will not get a schema that reflects your needs.

sql.GetDataContext(cs).``Design Time Commands``.SaveContextSchema  // put a "." at the end to call the command at compile time.
 

How fast is SQLProvider?

-

You may wonder if all this magic comes with a huge performance cost. However, when working with databases, -your network connection to SQL-database is typically the bottleneck, not your processor speed. -That's why SQLProvider short-circuits and optimises your queries as much as possible.

-

There is a performance-test project in this repo. Here is a sample run:

+

You may wonder does all this magic come with a huge performance cost. However, when working with databases, +your network connection to SQL-database is typically the bottle neck, not your processor speed. +That's why SQLProvider does short-circuit and optimise your queries as much as possible.

+

There is a performance-test project in this repo. This is a sample run:

  • BenchmarkDotNet v0.13.12
  • .NET 8
  • Laptop, Intel i9 13th Gen on Windows 11
  • -
  • Microsoft SQL Server on local computer
  • +
  • Microsoft SQL Sever on local computer
diff --git a/core/individuals.html b/core/individuals.html index 6765bfba..50454bf8 100644 --- a/core/individuals.html +++ b/core/individuals.html @@ -70,7 +70,7 @@ diff --git a/core/mappers.html b/core/mappers.html index ac06a13e..6d191a52 100644 --- a/core/mappers.html +++ b/core/mappers.html @@ -67,7 +67,7 @@ @@ -246,8 +246,8 @@

SQLProvider

Adding a Mapper using dataContext to use generated types from db

-

This mapper will ensure that you always sync your types with those you receive from your DB.

-

First, add a Domain Model

+

This mapper will get sure that you always sync your types with types you receive from your db.

+

First add an Domain Model

open System
 
 type Employee = {
@@ -278,8 +278,8 @@ 

let qry = query { for row in employees do select row} |> Seq.map (fun x -> x.MapTo<Employee2>())

-

The target type can be a record (as in the example) or a class type with properties named as the source columns and with a parameterless setter. -The target field name can also be different than the column name; in this case, it must be decorated with the MappedColumnAttribute custom attribute:

+

The target type can be a record (as in the example) or a class type with properties named as the source columns and with a paremeterless setter. +The target field name can also be different than the column name; in this case it must be decorated with the MappedColumnAttribute custom attribute:

open FSharp.Data.Sql.Common
 
 type Employee3 = {
@@ -292,7 +292,7 @@ 

for row in employees do select row} |> Seq.map (fun x -> x.MapTo<Employee3>())

-

Or alternatively, the ColumnValues from SQLEntity can be used to create a map, with the +

Or alternatively the ColumnValues from SQLEntity can be used to create a map, with the column as a key:

let rows = 
         query { 
@@ -370,17 +370,17 @@ 

Multiple items
val string: value: 'T -> string

--------------------
type string = String

Multiple items
[<Struct>] type DateTime = - new: date: DateOnly * time: TimeOnly -> unit + 16 overloads + new: year: int * month: int * day: int -> unit + 10 overloads member Add: value: TimeSpan -> DateTime member AddDays: value: float -> DateTime member AddHours: value: float -> DateTime - member AddMicroseconds: value: float -> DateTime member AddMilliseconds: value: float -> DateTime member AddMinutes: value: float -> DateTime member AddMonths: months: int -> DateTime member AddSeconds: value: float -> DateTime member AddTicks: value: int64 -> DateTime - ...

--------------------
DateTime ()
   (+0 other overloads)
DateTime(ticks: int64) : DateTime
   (+0 other overloads)
DateTime(date: DateOnly, time: TimeOnly) : DateTime
   (+0 other overloads)
DateTime(ticks: int64, kind: DateTimeKind) : DateTime
   (+0 other overloads)
DateTime(date: DateOnly, time: TimeOnly, kind: DateTimeKind) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, calendar: Globalization.Calendar) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, kind: DateTimeKind) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, calendar: Globalization.Calendar) : DateTime
   (+0 other overloads)
+ member AddYears: value: int -> DateTime + ...
<summary>Represents an instant in time, typically expressed as a date and time of day.</summary>

--------------------
DateTime ()
   (+0 other overloads)
DateTime(ticks: int64) : DateTime
   (+0 other overloads)
DateTime(ticks: int64, kind: DateTimeKind) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, calendar: Globalization.Calendar) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, kind: DateTimeKind) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, calendar: Globalization.Calendar) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, millisecond: int) : DateTime
   (+0 other overloads)
DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, millisecond: int, kind: DateTimeKind) : DateTime
   (+0 other overloads)
val mapEmployee: dbRecord: SqlDataProvider<...>.dataContext.main.EmployeesEntity -> Employee
val dbRecord: SqlDataProvider<...>.dataContext.main.EmployeesEntity
type dataContext = diff --git a/core/msaccess.html b/core/msaccess.html index 958a3a1a..9bdc1afd 100644 --- a/core/msaccess.html +++ b/core/msaccess.html @@ -70,7 +70,7 @@ @@ -249,13 +249,13 @@

SQLProvider

SQL Provider for MSAccess

-

MSAccess is based on System.Data.OleDb. Use ACE drivers for databases > Access 2007 (with -.accdb extension). For databases < 2007 (with .mdb extension), +

MSAccess is based on System.Data.OleDb. For databases > Access 2007 (with +.accdb extension), use ACE drivers. For dbs < 2007 (with .mdb extension), JET drivers can be used, although ACE will also work.

http://www.microsoft.com/download/en/confirmation.aspx?id=23734

Parameters

ConnectionString

-

A connection string used to connect to Microsoft Access instance; typical +

Basic connection string used to connect to PostgreSQL instance; typical connection strings for the driver apply here. See (MSAccess Connection Strings Documentation) [] for a complete list of connection string options.

@@ -272,7 +272,7 @@

Connectio

ConnectionStringName

Instead of storing the connection string in the source code / fsx script, you -can store values in the App.config file. This is the name of the +can store values in the App.config file. This is the name of the connectionString key/value pair stored in App.config (TODO: confirm file name).

// found in App.config (TODO:confirm)
 let connexStringName = "DefaultConnectionString"
@@ -283,7 +283,7 @@ 

DatabaseVendo
let dbVendor = FSharp.Data.Sql.Common.DatabaseProviderTypes.MSACCESS
 

ResolutionPath

-

Path to search for assemblies containing database vendor-specific connections +

Path to search for assemblies containing database vendor specific connections and custom types. Type the path where Npgsql.Data.dll is stored.

[<Literal>]
 let resolutionPath = __SOURCE_DIRECTORY__
diff --git a/core/mssql.html b/core/mssql.html
index 9bf3a31d..5f837bc4 100644
--- a/core/mssql.html
+++ b/core/mssql.html
@@ -70,7 +70,7 @@
              
              
@@ -256,7 +256,7 @@ 

DatabaseVendo
let [<Literal>] dbVendor = Common.DatabaseProviderTypes.MSSQLSERVER
 

ConnectionString

-

A basic connection string used to connect to MSSQL instance; typical +

Basic connection string used to connect to MSSQL instance; typical connection strings for the driver apply here. See MSSQL Connecting Strings Documentation for a complete list of connection string options.

@@ -292,7 +292,7 @@

Using SQLProvider with SSDT

-

You can use SQLProvider with SSDT.

+

You can user SQLProvider with SSDT.

Multiple items
namespace Microsoft.FSharp

--------------------
namespace FSharp
namespace Microsoft.FSharp.Data
diff --git a/core/mssqlssdt.html b/core/mssqlssdt.html index 5692f0d3..b6968709 100644 --- a/core/mssqlssdt.html +++ b/core/mssqlssdt.html @@ -70,7 +70,7 @@ @@ -260,7 +260,7 @@

SsdtPat

The SsdtPath must point to a .dacpac file.

Notes:

    -
  • A .dacpac file is generated when an SSDT project is built and can be found in the bin/Debug folder.
  • +
  • A .dacpac file is generated when an SSDT project is built, and can be found in the bin/Debug folder.
  • For development, you can set the SsdtPath to point to the generated .dacpac file in the SSDT project Debug folder. (Using a [<Literal>] ssdtPath allows relative pathing).
  • For deployment, the SSDT provider will search for the .dacpac file in the entry assembly folder.
  • Linking the generated .dacpac file to your project and setting it to CopyToOutputDirectory will ensure that it will exist in the assembly folder for deployment.
  • @@ -275,12 +275,12 @@

    //DB.GetDataContext().``Design Time Commands``.ClearDatabaseSchemaCache

Reloading the schema

-

Keeping the above Design Time Command commented out just below your SqlDataProvider type helps refresh the generated types after a schema change.

+

It is helpful to keep the above Design Time Command commented out just below your SqlDataProvider type for refreshing the generated types after a schema change.

Optional Parameters

UseOptionTypes

If FSharp.Data.Sql.Common.NullableColumnType.OPTION, F# option types will be used in place of nullable database columns. If NO_OPTION, you will always receive the default value of the column's type even if it is null in the database.

Table Names Filter

-

The SSDT provider currently supports a simple comma-delimited list of allowed table names (wildcards are not currently supported).

+

The SSDT provider currently supports a simple comma delimited list of allowed table names (wildcards are not currently supported).

AdventureWorks Example

let ctx = DB.GetDataContext()
 
@@ -294,12 +294,12 @@ 

What is SSDT?

SQL Server Data Tools (SSDT) is a modern development tool for building SQL Server relational databases, databases in Azure SQL, Analysis Services (AS) data models, Integration Services (IS) packages, and Reporting Services (RS) reports.

-

It allows you to quickly compare and synchronize schema changes between your SQL Server database and the current state of your .sql scripts in source control. +

It allows you to easily compare and synchronize schema changes between your SQL Server database and the current state of your .sql scripts in source control. Schemas can be synchronized bi-directionally (SSDT -> SQL Server or SQL Server -> SSDT).

Advantages of using the SSDT provider

-

The main advantage of using the SSDT provider is that it does not require a live connection to the database. -This makes running on a build server easier without manually spinning up a database instance.

-

Another advantage is that since your SSDT scripts are checked into your source control, you can easily have different schemas in each branch so that each branch can compile according to its local schema snapshot.

+

The main advantage to using the SSDT provider is that it does not require a live connection to the database. +This makes it easier to run on a build server without having to manually spin up a database instance.

+

Another advantage is that since your SSDT scripts are checked into your source control, you can easily have different schemas in each branch, so each branch can compile according its local schema snapshot.

How to create an SSDT Project

SSDT Projects can be created in two ways: * Visual Studio SSDT @@ -307,7 +307,7 @@

Known Issues

Tables

    -
  • User-defined data types are not yet supported
  • +
  • User defined data types are not yet supported
  • Computed table columns will default to a data type of System.Object since the data type is not listed in the .dacpac file. (See Type Annotations below.)

Views

@@ -315,7 +315,7 @@

Views

  • Computed view columns will default to a data type of System.Object since the data type is not listed in the .dacpac file. (See Type Annotations below.)
  • Type Annotations

    -

    As a workaround for computed table and view columns having unresolved data types, the SSDT provider allows you to add type annotations directly to the table or view as in-line comments.

    +

    As a work-around for computed table and view columns having unresolved data types, the SSDT provider allows you to add type annotations directly to the table or view as in-line comments.

    In the SalesOrderDetail.sql example table below, [LineTotal] is a computed column. Since the .dacpac file cannot determine the datatype for computed columns, the data type of the generated property will be defaulted to obj. As a workaround, an in-line type annotation /* MONEY NOT NULL /* can be added. NOTE: for computed table columns, the comment annotation must be contained within the parentheses.

    @@ -342,9 +342,9 @@

    Type Anno

    Notes:
      -
    • If no null constraint is added after the column type, nulls will be allowed by default.
    • +
    • If no null constraint is added after the column type, it will allow nulls by default.
    • The annotations are case-insensitive.
    • -
    • Hovering over a generated view property will designate if the data type was derived from a type annotation (or if it needs one).
    • +
    • Hovering over a generated view property will designate if the data type was derived from a type annotations (or if it needs one).
    • Do not include length information in the type annotation. For example, use varchar, not varchar(20).

    Functions

    diff --git a/core/mysql.html b/core/mysql.html index b09a6ef1..55b0119d 100644 --- a/core/mysql.html +++ b/core/mysql.html @@ -70,7 +70,7 @@ @@ -251,14 +251,14 @@

    SQLProvider

    MySQL Provider

    Parameters

    ConnectionString

    -

    A basic connection string used to connect to MySQL instance; typical connection +

    Basic connection string used to connect to MySQL instance; typical connection string parameters apply here. See MySQL Connector/NET Connection Strings Documentation for a complete list of connection string options.

    [<Literal>]
     let connString  = "Server=localhost;Database=HR;User=root;Password=password"
     
    -

    To deal with some MySQL data connection problems, you might want to add some more parameters to connectionstring: +

    To deal with some MySQL data connection problems you might want to add some more parameters to connectionstring: Auto Enlist=false; Convert Zero Datetime=true;

    ConnectionStringName

    Instead of storing the connection string in the source code, you @@ -273,7 +273,7 @@

    Database Ve let dbVendor = Common.DatabaseProviderTypes.MYSQL

    Resolution Path

    -

    Path to search for assemblies containing database vendor-specific connections and custom types. Type the path where +

    Path to search for assemblies containing database vendor specific connections and custom types. Type the path where Mysql.Data.dll is stored. Both absolute and relative paths are supported.

    [<Literal>]
     let resPath = __SOURCE_DIRECTORY__ + @"/../../../packages/tests/MySql.Data/lib/net45"
    @@ -319,63 +319,52 @@ 

    Basic types

    let myUInt64 = 10UL

    System.Guid Serialization

    -

    If you use a string column to save a Guid to the database, you may want to skip the hyphens ("-") +

    If you use string column to save a Guid to database, you may want to skip the hyphens ("-") when serializing them:

    let myGuid = System.Guid.NewGuid() //e.g. b8fa7880-ce44-4315-8d60-a160e5734c4b
     
     let myGuidAsString = myGuid.ToString("N") // e.g. "b8fa7880ce4443158d60a160e5734c4b"
     
    -

    The problem with this is that you should never forget to use "N" anywhere.

    +

    The problem with this is that you should never forgot to use "N" in anywhere.

    System.DateTime Serialization

    Another problem with MySql.Data is that DateTime conversions may fail if your culture is not the expected one.

    So you may have to convert datetimes as strings instead of using just myEmp.BirthDate <- DateTime.UtcNow:

    myEmp.SetColumn("BirthDate", DateTime.UtcNow.ToString("yyyy-MM-dd HH\:mm\:ss") |> box)
     
    -

    Notice that if you use .ToString("s"), there will be "T" between date and time: "yyyy-MM-ddTHH\:mm\:ss". +

    Notice that if you use .ToString("s") there will be "T" between date and time: "yyyy-MM-ddTHH\:mm\:ss". And comparing two datetimes as strings with "T" and without "T" will generate a problem with the time-part.

    If your DateTime columns are strings in the database, you can use DateTime.Parse in your where-queries:

    -
    let longAgoeTime.UtcNow.AddYears(-5)
    -let myEmp = 
    -    query {
    -        for emp in ctx.Hr.Employees do
    -        where (DateTime.Parse(emp.HireDate) > longAgo)
    -        select (emp)
    -    } |> Seq.head
    +
    let longAgo = DateTime.UtcNow.AddYears(-5)
    +let myEmp = 
    +    query {
    +        for emp in ctx.Hr.Employees do
    +        where (DateTime.Parse(emp.HireDate) > longAgo)
    +        select (emp)
    +    } |> Seq.head
     

    You should be fine even with canonical functions like DateTime.Parse(a.MeetStartTime).AddMinutes(10.).

    Caveats / Additional Info

    Check General, Static Parameters and Querying documentation.

    Support for MySqlConnector

    -

    MySqlConnector is an alternative driver to use instead of MySql.Data.dll. -It has fewer features but a lot better performance than the official driver.

    +

    MySqlConnector is alternative driver to use instead of MySql.Data.dll. +It has less features but a lot better performance than the official driver.

    You can use it with SQLProvider: Just remove MySql.Data.dll from your resolutionPath and insert there MySqlConnector.dll instead. (Get the latest from NuGet.) -It uses references to System.Buffers.dll, System.Runtime.InteropServices.RuntimeInformation.dll and System.Threading.Tasks.Extensions.dll, +It uses references to System.Buffers.dll, System.Runtime.InteropServices.RuntimeInformation.dll and System.Threading.Tasks.Extensions.dll so copy those files also to your referencePath. You can get them from corresponding NuGet packages.

    If you want to use the drivers in parallel, you need two resolution paths:

    -
    type HRFast = SqlDataProvider<Common.DatabaseProviderTypes.MYSQL, connString, ResolutionPath = @"c:\mysqlConnectorPath", Owner = "HR">
    -type HRProcs = SqlDataProvider<Common.DatabaseProviderTypes.MYSQL, connString, ResolutionPath = @"creferencesOwner = "HR">
    -
    -(**
    -
    -### Example performance difference from our unit tests
    -
    -One complex query:
    -
    -``` 
    -MySql.Data.dll:     Real: 00:00:00.583, C0:00:00.484, GC gen0: 1, gen1: 0, gen2: 0
    -MySqlConnector.dll: Real: 00:00:00.173, CPU: 00:00:00.093, GC gen0: 1, gen1: 0, gen2: 0
    -```
    -
    -Lots of async queries:
    -
    -```
    -MySQL.Data.dll      Real: 00:00:01.425, CPU: 00:00:02.078, GC gen0: 16, gen1: 1, gen2: 0
    -MySqlConnector.dll: Real: 00:00:01.091, CPU: 00:00:02.000, GC gen0: 14, gen1: 1, gen2: 0
    -```
    -
    -*)
    +
    type HRFast = SqlDataProvider<Common.DatabaseProviderTypes.MYSQL, connString, ResolutionPath = @"c:\mysqlConnectorPath", Owner = "HR">
    +type HRProcs = SqlDataProvider<Common.DatabaseProviderTypes.MYSQL, connString, ResolutionPath = @"c:\MysqlDataPath", Owner = "HR">
    +
    +

    Example performance difference from our unit tests

    +

    One complex query:

    +
    MySql.Data.dll:     Real: 00:00:00.583, CPU: 00:00:00.484, GC gen0: 1, gen1: 0, gen2: 0
    +MySqlConnector.dll: Real: 00:00:00.173, CPU: 00:00:00.093, GC gen0: 1, gen1: 0, gen2: 0
    +
    +

    Lot of async queries:

    +
    MySQL.Data.dll      Real: 00:00:01.425, CPU: 00:00:02.078, GC gen0: 16, gen1: 1, gen2: 0
    +MySqlConnector.dll: Real: 00:00:01.091, CPU: 00:00:02.000, GC gen0: 14, gen1: 1, gen2: 0
     
    Multiple items
    namespace FSharp

    --------------------
    namespace Microsoft.FSharp
    @@ -461,42 +450,43 @@

    val myGuid: Guid
    Multiple items
    [<Struct>] type Guid = - new: b: byte array -> unit + 6 overloads + new: b: byte array -> unit + 5 overloads member CompareTo: value: Guid -> int + 1 overload member Equals: g: Guid -> bool + 1 overload member GetHashCode: unit -> int - member ToByteArray: unit -> byte array + 1 overload + member ToByteArray: unit -> byte array member ToString: unit -> string + 2 overloads - member TryFormat: utf8Destination: Span<byte> * bytesWritten: byref<int> * ?format: ReadOnlySpan<char> -> bool + 1 overload - member TryWriteBytes: destination: Span<byte> -> bool + 1 overload - static member (<) : left: Guid * right: Guid -> bool - static member (<=) : left: Guid * right: Guid -> bool - ...

    --------------------
    Guid ()
    Guid(b: byte array) : Guid
    Guid(b: ReadOnlySpan<byte>) : Guid
    Guid(g: string) : Guid
    Guid(b: ReadOnlySpan<byte>, bigEndian: bool) : Guid
    Guid(a: int, b: int16, c: int16, d: byte array) : Guid
    Guid(a: int, b: int16, c: int16, d: byte, e: byte, f: byte, g: byte, h: byte, i: byte, j: byte, k: byte) : Guid
    Guid(a: uint32, b: uint16, c: uint16, d: byte, e: byte, f: byte, g: byte, h: byte, i: byte, j: byte, k: byte) : Guid
    + member TryFormat: destination: Span<char> * charsWritten: byref<int> * ?format: ReadOnlySpan<char> -> bool + member TryWriteBytes: destination: Span<byte> -> bool + static member (<>) : a: Guid * b: Guid -> bool + static member (=) : a: Guid * b: Guid -> bool + ...
    <summary>Represents a globally unique identifier (GUID).</summary>

    --------------------
    Guid ()
    Guid(b: byte array) : Guid
    Guid(b: ReadOnlySpan<byte>) : Guid
    Guid(g: string) : Guid
    Guid(a: int, b: int16, c: int16, d: byte array) : Guid
    Guid(a: int, b: int16, c: int16, d: byte, e: byte, f: byte, g: byte, h: byte, i: byte, j: byte, k: byte) : Guid
    Guid(a: uint32, b: uint16, c: uint16, d: byte, e: byte, f: byte, g: byte, h: byte, i: byte, j: byte, k: byte) : Guid
    Guid.NewGuid() : Guid
    val myGuidAsString: string
    Guid.ToString() : string
    Guid.ToString(format: string) : string
    Guid.ToString(format: string, provider: IFormatProvider) : string
    Multiple items
    [<Struct>] type DateTime = - new: date: DateOnly * time: TimeOnly -> unit + 16 overloads + new: year: int * month: int * day: int -> unit + 10 overloads member Add: value: TimeSpan -> DateTime member AddDays: value: float -> DateTime member AddHours: value: float -> DateTime - member AddMicroseconds: value: float -> DateTime member AddMilliseconds: value: float -> DateTime member AddMinutes: value: float -> DateTime member AddMonths: months: int -> DateTime member AddSeconds: value: float -> DateTime member AddTicks: value: int64 -> DateTime - ...

    --------------------
    DateTime ()
       (+0 other overloads)
    DateTime(ticks: int64) : DateTime
       (+0 other overloads)
    DateTime(date: DateOnly, time: TimeOnly) : DateTime
       (+0 other overloads)
    DateTime(ticks: int64, kind: DateTimeKind) : DateTime
       (+0 other overloads)
    DateTime(date: DateOnly, time: TimeOnly, kind: DateTimeKind) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, calendar: Globalization.Calendar) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, kind: DateTimeKind) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, calendar: Globalization.Calendar) : DateTime
       (+0 other overloads)
    -
    property DateTime.UtcNow: DateTime with get
    + member AddYears: value: int -> DateTime + ...
    <summary>Represents an instant in time, typically expressed as a date and time of day.</summary>

    --------------------
    DateTime ()
       (+0 other overloads)
    DateTime(ticks: int64) : DateTime
       (+0 other overloads)
    DateTime(ticks: int64, kind: DateTimeKind) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, calendar: Globalization.Calendar) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, kind: DateTimeKind) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, calendar: Globalization.Calendar) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, millisecond: int) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, millisecond: int, kind: DateTimeKind) : DateTime
       (+0 other overloads) +
    property DateTime.UtcNow: DateTime with get
    <summary>Gets a <see cref="T:System.DateTime" /> object that is set to the current date and time on this computer, expressed as the Coordinated Universal Time (UTC).</summary>
    <returns>An object whose value is the current UTC date and time.</returns>
    DateTime.ToString() : string
    DateTime.ToString(format: string) : string
    DateTime.ToString(provider: IFormatProvider) : string
    DateTime.ToString(format: string, provider: IFormatProvider) : string
    val box: value: 'T -> obj
    -
    val emp: obj
    -
    module Seq +
    val longAgo: obj
    +
    val emp: obj
    +
    module Seq from Microsoft.FSharp.Collections
    -
    type HRFast = obj
    -
    type HRProcs = obj
    +
    type HRFast = obj
    +
    type HRProcs = obj
    @@ -578,6 +568,11 @@

    + + Example performance difference from our unit tests + + diff --git a/core/netstandard.html b/core/netstandard.html index a14fa9e5..9950f116 100644 --- a/core/netstandard.html +++ b/core/netstandard.html @@ -70,7 +70,7 @@ @@ -251,7 +251,7 @@

    SQLProvider

    .NET Standard / .NET Core support

    This is very initial / experimental, from version 1.1.18.

    Install e.g. with: dotnet add package SQLProvider --version 1.1.18

    -

    You will need some configuration for your project files; see the examples. +

    You will need some configuration to your project files, see the examples. - You need a path to fsc. - You need your database driver and dependency dlls to resolutionPath-folder.

    Core / NetStandard:
    @@ -277,34 +277,34 @@ 

    Example p

    Limitations

    You need your database connection driver to also support .NET Core. If your database connection driver has external dependencies, they have to be also present -(e.g. a project prebuild-task to move them to the resolution path).

    -

    The connection string can be passed as a hard-coded static parameter (development) or GetDataContext(connectionstring) parameter on runtime, but fetching it automatically from the application configuration is not supported.

    +(e.g. a project prebuild-task to move them to resolution path).

    +

    Connection string can be passed as hard-coded static parameter (development) or GetDataContext(connectionstring) parameter on runtime, but fetching it automatically from the application configuration is not supported.

    The target frameworks are defined in the project file: <TargetFrameworks>net461;netcoreapp2.0;netstandard2.0</TargetFrameworks> -Corresponding files go to root bin paths, e.g.: \bin\netstandard2.0

    +Corresponding files goes to root bin paths, e.g.: \bin\netstandard2.0

    Microsoft Sql Server

    -

    If you plan to run Microsoft SQL Server, you need a dependency on System.Data.SqlClient and a post-build task to -copy the correct dll under System.Data.SqlClient\runtimes\...\ to your execution folder.

    +

    If you plan to run Microsoft SQL Server, you need a dependency to System.Data.SqlClient and a post-build task to +copy correct dll from under System.Data.SqlClient\runtimes\...\ to your execution folder.

    MySql

    MySQL is using MySQLConnector. -The alternative is to use the provided custom build of MySQL.Data.dll (6.10-rc) compiled from sources to .Net Standard 2.0. +Alternative is to use provided custom build of MySQL.Data.dll (6.10-rc) compiled from sources to .Net Standard 2.0. As the official MySQL.Data.dll does not support .NET Standard 2.0. See: https://bugs.mysql.com/bug.php?id=88016

    SQLite

    -

    SQLite is using Microsoft.Data.Sqlite library, which has a dependency on non-managed e_sqlite3.dll. -Ensure that the correct platform-specific file is found in referencePath or the PATH environment variable.

    -

    Due to the lack of Mono-support in Microsoft.Data.SQLite and Core-support in System.Data.SQLite, there is no +

    SQLite is using Microsoft.Data.Sqlite library which has dependency to non-managed e_sqlite3.dll. +Ensure that the correct platform specific file is found either from referencePath or PATH environment variable.

    +

    Due to lack of Mono-support in Microsoft.Data.SQLite and Core-support in System.Data.SQLite, there is no common driver that could work on both environments. That's why build is not possible with Mac/Ubuntu. -Microsoft.Data.Sqlite.Core.Backport could work, but it has not been tested.

    +Microsoft.Data.Sqlite.Core.Backport could maybe work, not tested.

    Non-Windows environment (Mac / Ubuntu / Linux / ...)

    -

    On Windows, you can reference .NET Standard 2.0 dlls in FSharp interactive, but in Osx or Linux, you cannot, as Mono is not .NET Standard 2.0 compatible.

    +

    On Windows you can reference .NET Standard 2.0 dlls in FSharp interactive but in Osx or Linux you cannot as Mono is not .NET Standard 2.0 compatible.

    Non-Windows typeprovider will call Mono on compile-time. Mono will use .Net 4.5.1 libraries. -Typeprovider handles that on compilation, and after compiling, your assembly will be .NET Core compatible. -However, your compilation resolutionPath reference assemblies have to be in the .Net 4.5.1 version, and your build folder -has to have core references, e.g., via PackageReferences.

    -

    On Ubuntu, you probably have to use sudo for both dotnet restore and dotnet build. -If you forgot the sudo, try to remove the bin and obj folders and then rerun the restore.

    +Typeprovider handles that on compilation, and after compile your assembly will ve .NET Core compatible. +But your compilation resolutionPath reference assemblies have to be .Net 4.5.1 version and your build folder +have to have core references, e.g. via PackageReferences.

    +

    On Ubuntu you probably have to use sudo for both dotnet restore and dotnet build. +If you forgot the sudo, try to remove bin and obj folders and then run restore again.

    Some Technical Details

    .NET Standard solution is located at /src/SQLProvider.Standard/SQLProvider.Standard.fsproj

    -

    The following files are needed to the NuGet package, from the .NET Standard SDK: +

    The following files is needed to the NuGet package, from the .NET Standard SDK: netstandard.dll, System.Console.dll, System.IO.dll, System.Reflection.dll, System.Runtime.dll

    You can find net461 versions of them by default from (e.g. 2.0.0, can be also something else like 2.0.2): Win: C:\Program Files\dotnet\sdk\2.0.0\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\ diff --git a/core/odbc.html b/core/odbc.html index d1ea04f0..6fd4150f 100644 --- a/core/odbc.html +++ b/core/odbc.html @@ -70,7 +70,7 @@

    @@ -260,7 +260,7 @@

    DSN

    type db = SqlDataProvider<Common.DatabaseProviderTypes.ODBC, dnsConn> let ctx = db.GetDataContext()
    -

    You don't need DSN for all data sources, e.g. MS Access can be used directly +

    You don't need DSN for all data source, e.g. MS Access can be used directly through the database file with a connection string like: @"Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\Northwind.mdb"

    Quote Character

    @@ -287,10 +287,10 @@

    Quote Chara

    DTC Transactions

    SQLProvider will do DTC-transactions over CRUD-operations. That will ensure -that all the database operations will either succeed or fail at once; when you do +that all the database operations will either success of fail at once, when you do ctx.SubmitUpdates().

    However, some ODBC-drivers (like MS-Access) don't support -DTC-transactions and will fail on the constructor call. The transaction creation can be +DTC-transactions and will fail on constructor call. The transaction creation can be disabled in context creation:

    let ctx3 = 
         db.GetDataContext(
    @@ -384,7 +384,6 @@ 

    DTC Trans Timeout: TimeSpan IsolationLevel: IsolationLevel } - member Equals: TransactionOptions * IEqualityComparer -> bool static member Default: TransactionOptions
    <summary> Corresponds to the System.Transactions.TransactionOptions. </summary> diff --git a/core/oracle.html b/core/oracle.html index df89d89f..9122995a 100644 --- a/core/oracle.html +++ b/core/oracle.html @@ -70,7 +70,7 @@
    @@ -249,7 +249,7 @@

    SQLProvider

    SQL Provider for Oracle

    -

    Oracle is based on the current release (12.1.0.1.2) of the managed ODP.NET driver found here. However, although the managed version is recommended, it should also work with previous versions of the native driver.

    +

    Oracle is based on the current release (12.1.0.1.2) of the managed ODP.NET driver found here. However although the managed version is recommended it should also work with previous versions of the native driver.

    #r "FSharp.Data.SqlProvider.dll"
     
     open FSharp.Data.Sql
    @@ -259,7 +259,7 @@ 

    let customers = ctx.Customers |> Seq.toArray

    -

    Because Oracle databases can be massive, an optional constructor parameter, TableNames, can be used as a filter.

    +

    Because Oracle databases can be huge, there is an optional constructor parameter TableNames that can be used as a filter.

    Multiple items
    type LiteralAttribute = inherit Attribute diff --git a/core/outline.html b/core/outline.html index 10d2b5b7..4370d4dc 100644 --- a/core/outline.html +++ b/core/outline.html @@ -70,7 +70,7 @@
    @@ -256,14 +256,14 @@

    SQL Typ * doesn't generate code; more lightweight * feeble * individuals - things set as static values (such as configuration) can be set, -so exceptions can be thrown if data does not match the expected

    +so exceptions can be thrown if data is not matching expected

    Outline of Docs

    @@ -305,7 +305,7 @@

    Outline of @@ -345,7 +345,7 @@

    Outline of

    TODO

    -

    Items mentioned in the documentation, however, need further documentation: +

    Items mentioned in documentation, however need further documantation: * static parameters in creating static type alias * querying.fsx * constraints-relationships.fsx

    diff --git a/core/parameters.html b/core/parameters.html index 2aeff921..ab8948ec 100644 --- a/core/parameters.html +++ b/core/parameters.html @@ -70,7 +70,7 @@ @@ -251,11 +251,11 @@

    SQLProvider

    SQL Provider Static Parameters

    Global parameters

    These are the "common" parameters used by all SqlProviders.

    -

    All static parameters must be known at compile time. For strings, this can be +

    All static parameters must be known at compile time, for strings this can be achieved by adding the [<Literal>] attribute if you are not passing it inline.

    ConnectionString

    This is the connection string commonly used to connect to a database server -instance. Please review the documentation on your desired database type to learn +instance. See the documentation on your desired database type to find out more.

    [<Literal>]
     let sqliteConnectionString =
    @@ -270,7 +270,7 @@ 

    C connectionString="Valid Connection String;" /> </connectionStrings>

    -

    Another usually easier option is to give a runtime connection string as a parameter for the .GetDataContext(...) method.

    +

    Another, usually easier option is to give a runtime connection string as parameter for .GetDataContext(...) method.

    In your source file:

    let connexStringName = "MyConnectionString"
     
    @@ -281,32 +281,32 @@

    DatabaseVendo let dbVendor = Common.DatabaseProviderTypes.SQLITE

    ResolutionPath

    -

    A third-party driver is required when using database vendors other than SQL Server, Access and ODBC. -This parameter should point to an absolute or relative directory where the -relevant assemblies are located. Please review at the database vendor-specific page for more details.

    +

    When using database vendors other than SQL Server, Access and ODBC, a third party driver +is required. This parameter should point to an absolute or relative directory where the +relevant assemblies are located. See the database vendor specific page for more details.

    [<Literal>]
     let resolutionPath =
         __SOURCE_DIRECTORY__ + @"..\..\..\files\sqlite"
     
    -

    The resolution path(s) (as can be semicolon separated if any) should point to the +

    The resolution path(s) (as can be semicolon separated if many) should point the database driver files and their reference assemblies) that work on design-time. -So, depending on your IDE, you probably want there .NET Standard 2.0 (or 2.1) versions -and not the latest .NET runtime, even when you'd target your final product to the latest .NET.

    +So depending on your IDE you probably want there .NET Standard 2.0 (or 2.1) versions +and not the latest .NET runtime, even when you target your final product to latest .NET.

    Note on .NET 5 PublishSingleFile and ResolutionPath

    If you are publishing your app using .NET 5's PublishSingleFile mode, the driver will -be loaded from the bundle itself rather than from a separate file on the drive. -The ResolutionPath parameter will not work for the published app, nor will the automatic +be loaded from the bundle itself rather than from a separate file on the drive. As such, +the ResolutionPath parameter will not work for the published app, nor will the automatic assembly resolution implemented within SQLProvider.

    -

    SQLProvider attempts to load the assembly from the AppDomain in such a case. This means +

    SQLProvider attempts to load the assembly from the AppDomain in such case. This means that your driver's assembly must be loaded by your application for SQLProvider to find -it. To do so, use the types of your driver before calling the .GetDataContext(...) +it. To do so, simply use the types of your driver before calling the .GetDataContext(...) method, such as in this example, using MySqlConnector. The specific type you refer to does not matter.

    typeof<MySqlConnector.Logging.MySqlConnectorLogLevel>.Assembly |> ignore
     let ctx = sqlType.GetDataContext()
     

    IndividualsAmount

    -

    Number of instances to retrieve using the individuals feature. +

    Number of instances to retrieve when using the individuals feature. Default is 1000.

    let indivAmt = 500
     
    @@ -314,7 +314,7 @@

    UseOptionType

    If set to FSharp.Data.Sql.Common.NullableColumnType.OPTION, all nullable fields will be represented by F# option types. If NO_OPTION, nullable fields will be represented by the default value of the column type - this is important because the provider will return 0 instead of null, which might cause problems in some scenarios.

    -

    The third option is VALUE_OPTION, where nullable fields are represented by ValueOption struct.

    +

    The third option is VALUE_OPTION where nullable fields are represented by ValueOption struct.

    [<Literal>]
     let useOptionTypes = FSharp.Data.Sql.Common.NullableColumnType.OPTION
     
    @@ -324,12 +324,12 @@

    Context Schema information file can be generated by calling design-time method SaveContextSchema under Design Time Commands:

    ctx.``Design Time Commands``.SaveContextSchema
     
    -

    This method doesn't affect runtime execution. Since SQLProvider loads schema information lazily, -calling SaveContextSchema only saves the portion of the database schema sufficient to compile -queries referenced in the scope of the current solution or script. Therefore, it is recommended that -it be executed after the successful build of the whole solution. Type the method name with parentheses. If you then -type a dot (.), you should see a tooltip with information about when the schema was last saved. Once the schema -is saved, the outcome of the method execution is stored in memory so the file will not be overwritten. +

    This method doesn't affect runtime execution. Note that since SQLProvider loads schema information lazily, +calling SaveContextSchema only saves the portion of the database schema that is sufficient to compile +queries referenced in the scope of the current solution or script. Therefore it is recommended to execute +it after the successful build of the whole solution. Type the method name with parentheses, if you then +type a dot (.), you should see a tooltip with information when the schema was last saved. Once the schema +is saved, the outcome of the method execution is stored in memory, so the file will not be overwritten. In case the database schema changes and the schema file must be updated, remove the outdated file, reload the solution and retype or uncomment a call to SaveContextSchema to regenerate the schema file.

    There is a tool method FSharp.Data.Sql.Common.OfflineTools.mergeCacheFiles to merge multiple files together.

    @@ -339,25 +339,25 @@

    Context

    Platform Considerations

    MSSQL

    -

    TableNames to filter the amount of tables.

    +

    TableNames to filter amount of tables.

    Oracle

    -

    TableNames to filter the number of tables and an Owner.

    +

    TableNames to filter amount of tables, and Owner.

    Owner (Used by Oracle, MySQL and PostgreSQL)

    -

    This has different meanings when running queries against different database vendors.

    -

    For PostgreSQL, this sets the schema name to which the target tables belong. It can also be a list separated by spaces, newlines, commas or semicolons.

    -

    For MySQL, this sets the database name (Or schema name, which is the same thing for MySQL). It can also be a list separated by spaces, newlines, commas or semicolons.

    +

    This has different meanings when running queries against different database vendors

    +

    For PostgreSQL, this sets the schema name where the target tables belong to. Can be also a list separated by spaces, newlines, commas or semicolons.

    +

    For MySQL, this sets the database name (Or schema name, for MySQL, it's the same thing). Can be also a list separated by spaces, newlines, commas or semicolons.

    For Oracle, this sets the owner of the scheme.

    SQLite

    The additional SQLiteLibrary parameter can be used to specify which SQLite library to load.

    PostgreSQL

    -

    There are no extra parameters.

    +

    No extra parameters.

    MySQL

    -

    There are no extra parameters.

    +

    No extra parameters.

    ODBC

    -

    There are no extra parameters.

    +

    No extra parameters.

    Example

    -

    It is recommended to use named static parameters in your type provider definition so

    +

    It is recommended to use named static parameters in your type provider definition like so

    type sql = SqlDataProvider<
                 ConnectionString = sqliteConnectionString,
                 DatabaseVendor = dbVendor,
    @@ -369,10 +369,10 @@ 

    Multiple items
    namespace FSharp

    --------------------
    namespace Microsoft.FSharp diff --git a/core/postgresql.html b/core/postgresql.html index 7b415393..74cb528f 100644 --- a/core/postgresql.html +++ b/core/postgresql.html @@ -70,7 +70,7 @@
    @@ -256,7 +256,7 @@

    DatabaseVendo
    let [<Literal>] dbVendor = Common.DatabaseProviderTypes.POSTGRESQL
     

    ConnectionString

    -

    A basic connection string used to connect to PostgreSQL instance; typical +

    Basic connection string used to connect to PostgreSQL instance; typical connection strings for the driver apply here. See PostgreSQL Connecting Strings Documentation for a complete list of connection string options.

    @@ -270,7 +270,7 @@

    C let [<Literal>] connexStringName = "DefaultConnectionString"

    Resolution Path

    -

    Path to search for assemblies containing database vendor-specific connections +

    Path to search for assemblies containing database vendor specific connections and custom types. Type the path where Npgsql.Data.dll is stored.

    let [<Literal>] resPath = @"C:\Projects\Libs\Npgsql"
     
    @@ -287,7 +287,7 @@

    UseOptionType

    Owner

    Indicates the schema or schemas to which SqlProvider will try to provide access to. -Multiple schemas can be indicated and separated by commas or semicolons. +Multiple schemas can be indicated, separated by commas or semicolons. Defaults to "public".

    let [<Literal>] owner = "public, admin, references"
     
    diff --git a/core/programmability.html b/core/programmability.html
    index 82bb894b..101b8439 100644
    --- a/core/programmability.html
    +++ b/core/programmability.html
    @@ -70,7 +70,7 @@
                  
                  
    @@ -331,7 +331,7 @@ 

    Programmabi member CopyTo: array: Array * index: int -> unit + 1 overload member GetEnumerator: unit -> IEnumerator member GetLength: dimension: int -> int - ... + ...
    <summary>Provides methods for creating, manipulating, searching, and sorting arrays, thereby serving as the base class for all arrays in the common language runtime.</summary>
    val map: mapping: ('T -> 'U) -> array: 'T array -> 'U array
    val i: obj
    Multiple items
    module Map diff --git a/core/querying.html b/core/querying.html index eaf414ff..b64ac04f 100644 --- a/core/querying.html +++ b/core/querying.html @@ -70,7 +70,7 @@
    @@ -249,7 +249,7 @@

    SQLProvider

    How to see the SQL-clause?

    -

    To display / debug your SQL-clauses you can add a listener for your logging framework to SqlQueryEvent:

    +

    To display / debug your SQL-clauses you can add listener for your logging framework to SqlQueryEvent:

    FSharp.Data.Sql.Common.QueryEvents.SqlQueryEvent |> Event.add (printfn "Executing SQL: %O")
     

    The event has separate fields of Command and Parameters @@ -309,11 +309,11 @@

    Querying

    If you consider using asynchronous queries, read more from the async documentation.

    SELECT -clause operations

    -

    You can control the execution context of the select-operations by the GetDataContext parameter selectOperations. +

    You can control the execution context of the select-operations by GetDataContext parameter selectOperations. The LINQ-query stays the same. You have two options: DotNetSide or DatabaseSide.

    -

    This might significantly affect the size of data transferred from the database.

    +

    This might have a significant effect on the size of data transferred from the database.

    SelectOperations.DotNetSide (Default)

    -

    Fetch the columns and run operations on the .NET-side.

    +

    Fetch the columns and run operations in .NET-side.

        let dc = sql.GetDataContext(SelectOperations.DotNetSide) // (same as without the parameter)
         query {
             for cust in dc.Main.Customers do
    @@ -344,7 +344,7 @@ 

    FROM main.Customers as [cust] -- params @param1 - "UK"; @param2 - "Outside UK"

    -

    If your query is a sub-query (a part of a larger query), then the operations are always executed on DatabaseSide.

    +

    If your query is a sub-query (a part of larger query), then operations are always executed on DatabaseSide.

    Supported Query Expression Keywords

    @@ -584,8 +584,8 @@

    Canonical Functions

    Besides that, we support these .NET-functions to transfer the logics to SQL-clauses (starting from SQLProvider version 1.0.57). If you use these, remember to check your database indexes.

    @@ -709,7 +709,7 @@

    , .StartsWith("...") and .EndsWith("..."), which are translated to corresponding LIKE-clauses (e.g. StartsWith("abc") is LIKE ('asdf%').

    -

    Substring(startpos,length) is supported. IndexOf with length parameter is supported except PostgreSql and SQLite.

    +

    Substring(startpos,length) is supported. IndexOf with length paramter is supported except PostgreSql and SQLite.

    Operations do support parameters to be either constants or other SQL-columns (e.g. x.Substring(x.Length() - 1)).

    .NET DateTime Functions

    @@ -919,8 +919,8 @@

    Numerical Functions (e.g. Microsoft.FSharp.Core.Operators)

    @@ -1174,7 +1174,7 @@

    Condition operations and others

    @@ -1216,12 +1216,12 @@

    Aggregate Functions

    -

    Also, you can use these to return an aggregated value, or in a group-by-clause:

    +

    Also you can use these to return an aggregated value, or in a group-by clause:

    @@ -1320,9 +1320,9 @@

    Agg

    StdDev, Variance are located in FSharp.Data.Sql.Operators namespace and also Seq.stdDevAsync and Seq.varianceAsync. Others can be used from List, Seq and Array modules, or Seq.countAsync, Seq.sumAsync, Seq.minAsync, Seq.maxAsync, Seq.averageAsync.

    More details

    -

    By default, query { ... } is IQueryable<T>, which is lazy. To execute the query you have to do Seq.toList, Seq.toArray, or perform some corresponding operations. If you don't do that, but just continue inside another query { ... } or use System.Linq .Where(...) etc, that will still be combined to the same SQL-query.

    -

    There are some limitations to the complexity of your queries but for example -this is still ok and will give you a very simple select-clause:

    +

    By default query { ... } is IQueryable<T> which is lazy. To execute the query you have to do Seq.toList, Seq.toArray, or some corresponding operation. If you don't do that but just continue inside another query { ... } or use System.Linq .Where(...) etc, that will still be combined to the same SQL-query.

    +

    There are some limitation of complexity of your queries, but for example +this is still ok and will give you very simple select-clause:

    let randomBoolean = 
         let r = System.Random()
         fun () -> r.NextDouble() > 0.5
    @@ -1338,7 +1338,7 @@ 

    More details< select (x, if c3 then order.ShipCountry else order.ShipRegion) } |> Seq.toArray

    -

    It can be for example (but it can also leave [Freight]-condition away and select ShipRegion instead of ShipAddress, depending on your random values):

    +

    It can be for example (but it can also leave [Freight]-condition away and select ShipRegion instead of ShipAddress, depending on your randon values):

        SELECT 
             [_arg2].[ShipAddress] as 'ShipAddress',
             [_arg2].[ShipCountry] as 'ShipCountry' 
    @@ -1346,7 +1346,7 @@ 

    More details< WHERE (([_arg2].[Freight]> @param1))

    Expressions

    -

    These operators perform no specific function in the code itself. Instead, they +

    These operators perform no specific function in the code itself, rather they are placeholders replaced by their database-specific server-side operations. Their utility is in forcing the compiler to check against the correct types.

    let bergs = ctx.Main.Customers.Individuals.BERGS
    @@ -1362,10 +1362,10 @@ 

    Operators

    Best practices working with queries

    When using Option types, check IsSome in where-clauses.

    -

    You may want to use the F# Option to represent database null, with SQLProvider +

    You may want to use F# Option to represent database null, with SQLProvider static constructor parameter UseOptionTypes = true. Database null-checking is done with x IS NULL. -With option types, the easiest way to do that is to check IsSome and IsNone:

    +With option types, easiest way to do that is to check IsSome and IsNone:

    let result =
         query {
             for order in ctx.Main.Orders do
    @@ -1379,7 +1379,7 @@ 

    open System.Linq let getOrders(futureOrders:bool, shipYears:int list) = @@ -1403,13 +1403,13 @@

    +

    1. Evaluate what we can on .NET side to short-circuit the SQL, 2. Optimize with Boolean algebra what is not needed, 3. Gather AST and translate to SQL

    The F# query syntax is LINQ Abstract Syntax Tree (AST), and SQLProvider does process those on querying.

    Operations that can be done on .NET side vs. Operations translated to SQL

    Don't select all the fields if you don't need them

    -

    In general, you should select only the columns you need -and only a whole object if you update its fields.

    +

    In general you should select only columns you need +and not a whole object if you don't update its fields.

    // Select all the fields from a table, basically:
     // SELECT TOP 1 Address, City, CompanyName, 
     //      ContactName, ContactTitle, Country, 
    @@ -1442,7 +1442,7 @@ 

    F# Map values are accessed like this: myItem.["City"]

    Using code logic in select-clause

    -

    Feel free to insert non-Sql syntax to select-clauses. +

    Don't be scared to insert non-Sql syntax to select-clauses. They will be parsed business-logic side!

    let fetchOrders customerZone =
         let currentDate = DateTime.UtcNow.Date
    @@ -1463,14 +1463,14 @@ 

    } |> Seq.toArray

    You can't have a let inside a select, but you can have custom function calls like -parseTimezoneFunction here. Just be careful; they are executed separately for each result item. -So, if you also want SQL to execute there, doing a separate function and taking -a collection as a parameter is better. See below.

    +parseTimezoneFunction here. Just be careful, they are executed for each result item separately. +So if you want also SQL to execute there, it's rather better to do a separate function taking +a collection as parameter. See below.

    Using one sub-query to populate items

    -

    Sometimes, you want to fetch efficiently sub-items, like +

    Sometimes you want to fetch efficiently sub-items, like "Give me all orders with their order-rows"

    -

    In the previous example, we fetched OrderRows as an empty array. -Now, we populate those with one query in an immutable way:

    +

    In the previous example we fetched OrderRows as empty array. +Now we populate those with one query in immutable way:

    let orders = fetchOrders 123
     
     let orderIds = 
    @@ -1499,8 +1499,8 @@ 

    })

    How to deal with large IN-queries?

    -

    The previous query had orderIds.Contains(row.OrderId). -This is fine if your collection has 50 items. But what if there are 5000 orderIds? +

    The pervious query had orderIds.Contains(row.OrderId). +Which is fine if your collection has 50 items but what if there are 5000 orderIds? SQL-IN will fail. You have two easy options to deal with that.

    Chunk your collection:

    F# has built-in chunkBySize function!

    @@ -1518,9 +1518,9 @@

    ctx.SubmitUpdates()

    Creating a nested query

    -

    By leaving the last |> Seq.toArray away from your main query, you create a lazy -IQueryable<...>-query. This means your IN-objects are not fetched from -the database but are actually formed as a nested query.

    +

    By leaving the last |> Seq.toArray away from your main query you create a lazy +IQueryable<...>-query. Which means your IN-objects are not fetched from +the database, but is actually a nested query.

    let nestedOrders =
         query {
             for order in ctx.Main.Orders do
    @@ -1556,9 +1556,9 @@ 

    } } |> Seq.toArray

    -

    That way, the order hit count doesn't matter as the database takes care of it.

    +

    That way order hit count doesn't matter as the database is taking care of it.

    Group-by and more complex query scenarios

    -

    One problem with SQLProvider is that monitoring the SQL-clause performance hitting +

    One problem with SQLProvider is that monitorin the SQL-clause performance hitting to database indexes is hard to track. So the best way to handle complex SQL is to create a database view and query that from SQLProvider.

    Still, if you want to use LINQ groupBy, this is how it's done:

    @@ -1570,8 +1570,8 @@

    select (cites.Key, cites.Sum(fun order -> order.Freight)) } |> Array.executeQueryAsync

    -

    Group-by support is limited, mostly for single tables only. -F# Linq query syntax doesn't support doing select count(1), sum(UnitPrice) from Products +

    Group-by is support is limited, mostly for single tables only. +F# Linq query syntax doesnt support doing select count(1), sum(UnitPrice) from Products but you can group by a constant to get that:

    let qry = 
         query {
    @@ -1580,7 +1580,7 @@ 

    select (g.Count(), g.Sum(fun p -> p.UnitPrice)) } |> Seq.head

    -

    For more info, see:

    +

    For more info see:

    -

    The interop libraries are not properly placed after the System.Data.SQLite NuGet package is added, so you might have to +

    The interop libraries are not properly placed afer the System.Data.SQLite NuGet package is added, so you might have to manually copy the interop libraries:

    If System.Data.SQLite.dll is in the location where NuGet places it by default, you don't have to submit the ResolutionPath parameter at all, but you still need to copy the interop libraries as described above.

    diff --git a/core/techdetails.html b/core/techdetails.html index 0e793b48..0fb120e4 100644 --- a/core/techdetails.html +++ b/core/techdetails.html @@ -67,7 +67,7 @@ @@ -256,26 +256,26 @@

    The environ

    Even though our test run will run modifications to the test databases, don't check in these *.mdb and *.db files with your commit, to avoid bad merge-cases.

    Solution structure

    -

    We use Fake and Paket. Before opening the solutions, you have to run build.cmd on Windows (or sh ./build.sh on Mac/Linux).

    +

    We use Fake and Paket. You have to run build.cmd on Windows (or sh ./build.sh on Mac/Linux) before opening the solutions.

    The main source solution is SQLProvider.sln. -The unit tests are located in another one, SQLProvider.Tests.sln, and when you open the solution, it will lock the bin\net48\FSharp.Data.SqlProvider.dll, and after that you can't build the main solution.

    +The unit tests are located in another one, SQLProvider.Tests.sln, and when you open the solution, it will lock the bin\net472\FSharp.Data.SqlProvider.dll, and after that you can't build the main solution.

      -
    • To debug design-time features, you "Attach to process" the main solution debugger to another instance of Visual Studio running the test solution.
    • -
    • To debug runtime, attach it to e.g. fsi.exe and run the code in the interactive.
    • +
    • To debug design-time features you "Attach to process" the main solution debugger to another instance of Visual Studio running the tests solution.
    • +
    • To debug runtime you attach it to e.g. fsi.exe and run the code in interactive.

    Workarounds for "file in use" (issue #172)

    Referenced Files

    Test cases

    -

    There are database-specific test files as scripts in the test solution, /tests/SqlProvider.Tests/scripts/, but also one generic /tests/SqlProvider.Tests/QueryTests.fs which is running all the SQLite tests in the build script.

    -

    High-level description of the provider

    +

    There are database specific test files as scripts in the test solution, /tests/SqlProvider.Tests/scripts/, but also one generic /tests/SqlProvider.Tests/QueryTests.fs which is running all the SQLite tests in the build script.

    +

    High level description of the provider

    Context and design time

    You have a source code like:

    type sql = SqlDataProvider<...params...>
    @@ -284,7 +284,7 @@ 

    SqlDesignTime.fs and create (as lazily as possible) the database schema types (the shape of the database). These methods are added to the sql.datacontext and are stored to concurrent dictionaries. Visual Studio will do a lot of background processing so thread-safety is important here.

    GetDataContext() will return a dynamic class called dataContext which will on design-time call class SqlDataContext in file SqlRuntime.DataContext.fs through interface ISqlDataContext. SqlDataContext uses ProviderBuilder to create database specific providers, fairly well documented ISqlProvider in file SqlRuntime.Common.fs.

    Querying

    -

    The entity-items themselves are rows in the database data, and they are modelled as dynamic sub-classes of SqlEntity, base-class in file SqlRuntime.Common.fs which can be thought of as a wrapper for Dictionary<string,obj> (a column name, and the value). SqlEntity is actually used for all kinds of result data, so the data columns may not correspond to the actual data values. Mostly the results of the data are shaped as SqlQueryable<SqlEntity> or SqlQueryable<'T>, which is SQLProvider's class for IQueryable<'T> items.

    +

    The entity-items themselves are rows in the database data and they are modelled as dynamic sub-classes of SqlEntity, base-class in file SqlRuntime.Common.fs which can be basically think of as wrapper for Dictionary<string,obj> (a column name, and the value). SqlEntity is used for all-kind of result-data actually, so the data columns may not correspond to the actual data values. Mostly the results of the data are shaped as SqlQueryable<SqlEntity>, or SqlQueryable<'T> which is a SQLProvider's class for IQueryable<'T> items.

    query {
         for cust in dbc.Main.Customers do
         where ("ALFKI" = cust.CustomerId)
    @@ -293,8 +293,8 @@ 

    Querying

    This query is translated to a LINQ-expression-tree through Microsoft.FSharp.Linq.QueryFSharpBuilder. That will call IQueryable<'T>'s member Provider to execute two things for the LINQ-expression-tree: first CreateQuery and later Execute.

    Parsing the LINQ-expression-tree

    -

    CreateQuery will hit our SqlQueryable<...>'s Provider (IQueryProvider) property. LINQ-expression-trees can be recursive type structures, so we will call CreateQuery for each linq-method. We get the expression-tree as a parameter and parse that with (multi-layer-) active patterns.

    -

    Our example of the LINQ-expression tree is:

    +

    CreateQuery will hit our SqlQueryable<...>'s Provider (IQueryProvider) property. LINQ-expression-trees can be kind of recursive type structures, so we it will call CreateQuery for each linq-method. We get the expression-tree as parameter, and parse that with (multi-layer-) active patterns.

    +

    Our example the LINQ-expression tree is:

    .Call System.Linq.Queryable.Where(
         .Constant<System.Linq.IQueryable`1[SqlEntity]>(SqlQueryable`1[SqlEntity]),
         '(.Lambda #Lambda1<System.Func`2[SqlEntity,Boolean]>))
    @@ -306,11 +306,11 @@ 

    | MethodCall(None, (MethodWithName "Where" as meth), [ SourceWithQueryData source; OptionalQuote qual ]) ->

    because the LINQ-expression-tree has ExpressionType.Call named "Where" with source of IWithSqlService (which is the SqlQueryable). -What happens then is the parsing of the Where-query. Where-queries are nested structures having known conditions (modelled with pattern Condition). If the conditions have SqlColumnGets, a pattern that says that it's SqlEntity with method GetColumn, we know that it has to be part of SQL-clause.

    -

    We collect all the known patterns in IWithSqlServices field SqlExpression, being a type SqlExp, our non-complete known recursive model-tree of SQL clauses.

    +What happens then is parsing of the Where-query. Where-queries are nested structures having known conditions (modelled with pattern Condition). If the conditions are having SqlColumnGets, a pattern that says that it's SqlEntity with method GetColumn, we know that it has to be part of SQL-clause.

    +

    We collect all the known patterns to IWithSqlServices field SqlExpression, being a type SqlExp, our non-complete known recursive model-tree of SQL clauses.

    Operations that can be done on .NET side vs. Operations translated to SQL

    Execution of the query

    -

    Eventually, there also comes the call executeQuery (or executeQueryScalar for SQL-queries that will return a single value like count), either by enumeration of our IQueryable or at the end of LINQ-expression-tree. That will call QueryExpressionTransformer.convertExpression. What happens there (in +

    Eventually there also comes the call executeQuery (or executeQueryScalar for SQL-queries that will return a single value like count), either by enumeration of our IQueryable or at the end of LINQ-expression-tree. That will call QueryExpressionTransformer.convertExpression. What happens there (in SqlRuntime.Linq.fs):

    • We create a projection-lambda. This is described in detail below.
    • @@ -318,8 +318,8 @@

    SELECT [cust].[Address] as 'Address', 
            [cust].[City] as 'City',
    @@ -338,13 +338,13 @@ 

    -- params @param1 - "ALFKI";

    Projection-lambda

    -

    Now, if the select-clause had been complex:

    +

    Now, if the select-clause would have been complex:

    query {
         for emp in dc.Main.Employees do
         select (emp.BirthDate.DayOfYear + 3)
     } |> Seq.toArray
     
    -

    We don't know the function of DayOfYear for each different SQL-providers (Oracle/MSSQL/Odbc/...), but we still want this code to work. The LINQ-expression-tree for this query is:

    +

    We don't know the function of DayOfYear for each different SQL-providers (Oracle/MSSQL/Odbc/...), but we still want tihs code to work. The LINQ-expression-tree for this query is:

    .Call System.Linq.Queryable.Select(
         .Constant<System.Linq.IQueryable`1[SqlEntity]>(SqlQueryable`1[SqlEntity]),
         '(.Lambda #Lambda1<System.Func`2[SqlEntity,Int32]>))
    @@ -352,36 +352,36 @@ 

    Project (.Call $emp.GetColumn("BirthDate")).DayOfYear + 3 }

    -

    What happens now is that in SqlRuntime.QueryExpression.fs, we parse the whole LINQ-expression-tree, and find the parts that we do know to belong to SQL: +

    What happens now, is that in SqlRuntime.QueryExpression.fs we parse the whole LINQ-expression-tree, and find the parts that we do know to belong to SQL: the SqlEntity's emp.GetColumn("BirthDate"), and create a lambda-expression where this is replaced with a parameter:

    fun empBirthDate -> empBirthDate.DayOfYear + 3
     
    -

    Now when we get the empBirthDate from the SQL result, we can execute this lambda for the parameter in the .NET-side, not SQL, and then we get the correct result. This is done with for e in results -> projector.DynamicInvoke(e) in SqlRuntime.Linq.fs.

    +

    Now when we get the empBirthDate from the SQL result, we can execute this lambda for the parameter, in .NET-side, not SQL, and then we get the correct result. This is done with for e in results -> projector.DynamicInvoke(e) in SqlRuntime.Linq.fs.

    How to debug SQLProvider in your own solution, not the test-project

    The runtime debugging can be done just like any other:

    1. Build your own project
    2. -
    3. Then just build SQLProvider.sln and go to bin-folder, select your framework, and copy FSharp.Data.SqlProvider.dll and FSharp.Data.SqlProvider.pdb
    4. -
    5. Replace your own project's bin-folder copies of these two files, run your software without rebuilding.
    6. +
    7. Then just build SQLProvider.sln and then go to bin-folder, select your framework, and copy FSharp.Data.SqlProvider.dll and FSharp.Data.SqlProvider.pdb
    8. +
    9. And then replace your own project's bin-folder copies of these 2 files, run your software without rebuild.
    -

    Debugging the design-time VS2022 is doable but a bit more complex. -This will mess up your SQLProvider Nuget cache, so after done, delete the SQLProvider cache-folder and restore the package again.

    +

    Debugging the design-time VS2022 is doable, but a bit more complex. +This will mess your SQLProvider Nuget cache, so after done, delete the SQLProvider cache-folder and restore the package again.

    1. Open SQLProvider.sln (with Visual Studio 2022) and build it (in debug mode). Keep this open for now.
    2. -
    3. Open Explorer, it has made under bin-folder some folders, e.g. \net48 \net6.0 \netstandard2.0 \netstandard2.1 and \typeproviders
    4. +
    5. Open explorer, it has made under bin-folder some folders, e.g. \net472 \net6.0 \netstandard2.0 \netstandard2.1 and \typeproviders
    6. Open another explorer, go to your location of Nuget cache, the version you are using e.g. C:\Users\me\.nuget\packages\sqlprovider\1.3.30
    7. -
    8. Replace the Nuget cache \typeproviders folder with your fresh bin typeproviders folder.
    9. -
    10. Replace the Nuget cache \lib folder with other folders from your fresh bin folder.
    11. -
    12. Open another instance of VS2022 to the start-screen, but don't open any project yet.
    13. +
    14. Replace the nuget cache \typeproviders folder with your fresh bin typeproviders folder.
    15. +
    16. Replace the nuget cache \lib folder with other folders from your fresh bin folder.
    17. +
    18. Open another instance of VS2022 to the start-screen but don't open any project yet.
    19. Go back to your first instance of VS2022 with SQLProvider.sln. Add some breakpoints. Select from the top menu: Debug - Attach to Process...
    20. -
    21. Select devenv.exe, which is another VS2022 instance.
    22. -
    23. Switch to this new instance and load your own project that uses SQLProvider, and it'll stop at the breakpoints.
    24. +
    25. Select devenv.exe which is the another VS2022 instance.
    26. +
    27. Switch to this new instance and load your own project that uses SQLProvider and it'll stop to the breakpoints.

    Other things to know

    • SQLProvider also runs ExpressionOptimizer functions to simplify the LINQ-expression-trees
    • -

      If you do IN-query (LINQ-Contains) to IEnumerable, it's as normal IN-query. Still, if the source collection is SqlQueryable, then the query is serialized as a nested query, where we have to check that the parameter names won't collide (i.e. param1 can be used only once).

      +

      If you do IN-query (LINQ-Contains) to IEnumerable, it's as normal IN-query, but if the source collection is SqlQueryable, then the query is serialized as a nested query, where we have to check that the parameter names won't collide (i.e. param1 can be used only once).

      This documentation was written on 2017-04-11.

    @@ -432,7 +432,7 @@

    O
  • - High-level description of the provider + High level description of the provider
  • diff --git a/core/unittest.html b/core/unittest.html index 8f20bb66..8745ab7c 100644 --- a/core/unittest.html +++ b/core/unittest.html @@ -70,7 +70,7 @@
  • @@ -252,33 +252,33 @@

    That's a clear advantage on large-scale projects, where there are multiple developers and the SQL-queries grow more complex over time.

      -
    1. Debugging. It is faster to debug the unit test than to spin the full environment again and again.
    2. -
    3. Refactoring: To ensure what the original functionality is actually doing before you modify it.
    4. +
    5. Debugging. Faster to debug unit-test than spin the full environment again and again.
    6. +
    7. Refactoring: To ensure what the original functionality is actually doing before you modify.

    Why to unit-test?

    F# strong typing provides safety over raw SQL: Instead of your customer finding an issue, your code will not compile if the database shape is wrong, -for example, someone removed an important column.

    +for example someone removed an important column.

    SQLProvider does parametrized SQL, you can watch the executed SQL, and you can even open the parameterized SQL parameters for easier debugging:

    FSharp.Data.Sql.Common.QueryEvents.SqlQueryEvent 
     |> Event.add (fun e -> System.Console.WriteLine (e.ToRawSqlWithParamInfo()))
     
    -

    But unit-testing is a good addition in scenarios where:

    +

    But unit-testing is good addition in scenarios where:

    • Your database is very dynamic, and data is changing all the time
    • -
    • You want to ensure the logic works over a period of time
    • +
    • You want to ensure the logic working over period of time
    • You have a big project where build-time takes long
    • -
    • You want Continuous Integration, but your test-data or database is unstable.
    • +
    • You want Continuous Integration, but your test-data or database is not stable.

    How?

    There are 2 helper functions to mock the database connection:

      -
    • FSharp.Data.Sql.Common.OfflineTools.CreateMockEntities<'T> - With this, you can mock a single table.
    • -
    • FSharp.Data.Sql.Common.OfflineTools.CreateMockSqlDataContext<'T> - With this, you can mock a context with multiple tables
    • +
    • FSharp.Data.Sql.Common.OfflineTools.CreateMockEntities<'T> - With this you can mock a single table.
    • +
    • FSharp.Data.Sql.Common.OfflineTools.CreateMockSqlDataContext<'T> - With this you can mock a context with multiple tables
    -

    You just feed anonymous records like they would be database rows. +

    You just feed an anonymous records like they would be database rows. You don't need to add all the columns, just the ones you use in your query. But you can add extra-columns for easier asserts.

    -

    Example: executable business logic

    +

    Example, executable business logic

    open System
     
     type OrderDateFilter =
    @@ -315,7 +315,7 @@ 

    }

    Example, unit-test part

    -

    Note: CustomerID, not CustomerId. These are the database field-names, not the nice LINQ names.

    +

    Note: CustomerID, not CustomerId. These are DB-field-names, not nice LINQ names.

    let ``mock for unit-testing: datacontext``() =
         task {
             let sampleDataMap =
    @@ -345,17 +345,17 @@ 

    assert_contains ("E143AB", 50M) res }

    -

    CreateMockSqlDataContext takes a Map<string,obj> where the string is the table name as in the database, and obj is an array of anonymous records. -The mock is meant to help create data-context objects to enable easier testing of your LINQ-logic, not to test SQLProvider itself.

    +

    CreateMockSqlDataContext takes a Map<string,obj> where the string is the table name as in database, and obj is an array of anonymous records. +The mock is meant to help creating data-context objects to enable easier testing of your LINQ-logic, not to test SQLProvider itself.

    There are some limitations with the SQLProvider mock a DB-context:

    • The mock-context will not connect the DB, and you can't save entity modifications. SubmitUpdates() will do nothing.
    • SQLProvider custom operators (like x |=| xs and y %<> "A%") are not supported. So you have to use LINQ-ones (e.g. xs.Contains x and not y.StartsWith "A") that do work in SQLProvider as well.
    • You can call database-table .Create methods to create new instances (it doesn't connect the database). You can call update entity columns x.Col <- Some "hi", but it doesn't really do anything.
    • You cannot call stored procedures.
    • -
    • Names are database names, and they are case-sensitive. If you miss a table, in your mock, there will be a clear error. If you mistyped the anonymous record column name, you will probably just get a zero-result or ValueNone.Value-error or some other unwanted behaviour.
    • +
    • Names are database names, and they are case-sensitive. If you miss a table, in your mock, there will be clear error. If you mistyped anonymous record column name, you will probably just get a zero-result or ValueNone.Value-error or some other unwanted behaviour.
    -

    If you are running an off-line solution like SSDT or ContextSchemaPath, you should be able to run also these unit-tests with your CI.

    +

    If you are running off-line solution like SSDT or ContextSchemaPath, you should be able to run also these unit-tests with your CI.

    member Common.QueryEvents.SqlEventData.ToRawSqlWithParamInfo: unit -> string
    Multiple items
    [<Struct>] type DateTime = - new: date: DateOnly * time: TimeOnly -> unit + 16 overloads + new: year: int * month: int * day: int -> unit + 10 overloads member Add: value: TimeSpan -> DateTime member AddDays: value: float -> DateTime member AddHours: value: float -> DateTime - member AddMicroseconds: value: float -> DateTime member AddMilliseconds: value: float -> DateTime member AddMinutes: value: float -> DateTime member AddMonths: months: int -> DateTime member AddSeconds: value: float -> DateTime member AddTicks: value: int64 -> DateTime - ...

    --------------------
    DateTime ()
       (+0 other overloads)
    DateTime(ticks: int64) : DateTime
       (+0 other overloads)
    DateTime(date: DateOnly, time: TimeOnly) : DateTime
       (+0 other overloads)
    DateTime(ticks: int64, kind: DateTimeKind) : DateTime
       (+0 other overloads)
    DateTime(date: DateOnly, time: TimeOnly, kind: DateTimeKind) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, calendar: Globalization.Calendar) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, kind: DateTimeKind) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, calendar: Globalization.Calendar) : DateTime
       (+0 other overloads)
    + member AddYears: value: int -> DateTime + ...
    <summary>Represents an instant in time, typically expressed as a date and time of day.</summary>

    --------------------
    DateTime ()
       (+0 other overloads)
    DateTime(ticks: int64) : DateTime
       (+0 other overloads)
    DateTime(ticks: int64, kind: DateTimeKind) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, calendar: Globalization.Calendar) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, kind: DateTimeKind) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, calendar: Globalization.Calendar) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, millisecond: int) : DateTime
       (+0 other overloads)
    DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, millisecond: int, kind: DateTimeKind) : DateTime
       (+0 other overloads)
    val task: TaskBuilder
    val ignoreOrderDate: bool
    val ignoreShippedDate: bool
    @@ -525,7 +525,7 @@

    val executeQueryAsync: query: Linq.IQueryable<'a> -> Threading.Tasks.Task<'a array>
    <summary> Execute SQLProvider query and release the OS thread while query is being executed. </summary> @@ -557,7 +557,7 @@

    property Array.Length: int with get +
    property Array.Length: int with get
    <summary>Gets the total number of elements in all the dimensions of the <see cref="T:System.Array" />.</summary>
    <exception cref="T:System.OverflowException">The array is multidimensional and contains more than <see cref="F:System.Int32.MaxValue" /> elements.</exception>
    <returns>The total number of elements in all the dimensions of the <see cref="T:System.Array" />; zero if there are no elements in the array.</returns>
    @@ -581,7 +581,7 @@

    - Example: executable business logic + Example, executable business logic
  • diff --git a/index.html b/index.html index 395e80be..1110cc26 100644 --- a/index.html +++ b/index.html @@ -70,7 +70,7 @@
  • diff --git a/index.json b/index.json index b2bbf2bf..f8137327 100644 --- a/index.json +++ b/index.json @@ -1 +1 @@ -[{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql.html","title":"FSharp.Data.Sql","content":"Array \nAsyncOperations \nColumnSchema \nDataTable \nList \nOperators \nQuotationHelpers \nSeq \nAggregateOperation \nConditionOperator \nSelectOperations \nSqlDataProvider","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common.html","title":"FSharp.Data.Sql.Common","content":"Bytes \nConfigHelpers \nOfflineTools \nQueryEvents \nSql \nStandardExtensions \nStubs \nCaseSensitivityChange \nDatabaseProviderTypes \nEntityState \nGroupData \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E \nISqlDataContext \nIWithDataContext \nLinkData \nMappedColumnAttribute \nNullableColumnType \nOdbcQuoteCharacter \nOnConflict \nRelationshipDirection \nResultSet \nReturnSetType \nReturnValueType \nSQLiteLibrary \nSelectData \nSqlEntity \nUnionType \ntable","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers.html","title":"FSharp.Data.Sql.Providers","content":"DuckDb \nFirebird \nMSSqlServer \nMSSqlServerDynamic \nMSSqlServerSsdt \nMySql \nPostgreSQL","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime.html","title":"FSharp.Data.Sql.Runtime","content":"Seq \nCastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E \nSqlDataContext","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema.html","title":"FSharp.Data.Sql.Schema","content":"Column \nColumnLookup \nCompileTimePackageDefinition \nCompileTimeSprocDefinition \nQueryParameter \nRelationship \nRunTimeSprocDefinition \nSproc \nSprocName \nTable \nTypeMapping","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt.html","title":"FSharp.Data.Sql.Ssdt","content":"DacpacParser","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions.html","title":"FSharp.Data.Sql.Transactions","content":"IsolationLevel \nTransactionOptions","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/global.html","title":"global","content":"ExpressionOptimizer","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-array.html","title":"Array","content":"Array \n \nArray.executeQueryAsync \nexecuteQueryAsync","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-array.html#executeQueryAsync","title":"Array.executeQueryAsync","content":"Array.executeQueryAsync \nexecuteQueryAsync \n Execute SQLProvider query and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-asyncoperations.html","title":"AsyncOperations","content":"AsyncOperations \n \nAsyncOperations.executeAsync \nexecuteAsync \nAsyncOperations.getTryHeadAsync \ngetTryHeadAsync \nAsyncOperations.getHeadAsync \ngetHeadAsync \nAsyncOperations.getExactlyOneAsync \ngetExactlyOneAsync \nAsyncOperations.getTryExactlyOneAsync \ngetTryExactlyOneAsync \nAsyncOperations.getCountAsync \ngetCountAsync \nAsyncOperations.getAggAsync \ngetAggAsync","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-asyncoperations.html#executeAsync","title":"AsyncOperations.executeAsync","content":"AsyncOperations.executeAsync \nexecuteAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-asyncoperations.html#getTryHeadAsync","title":"AsyncOperations.getTryHeadAsync","content":"AsyncOperations.getTryHeadAsync \ngetTryHeadAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-asyncoperations.html#getHeadAsync","title":"AsyncOperations.getHeadAsync","content":"AsyncOperations.getHeadAsync \ngetHeadAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-asyncoperations.html#getExactlyOneAsync","title":"AsyncOperations.getExactlyOneAsync","content":"AsyncOperations.getExactlyOneAsync \ngetExactlyOneAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-asyncoperations.html#getTryExactlyOneAsync","title":"AsyncOperations.getTryExactlyOneAsync","content":"AsyncOperations.getTryExactlyOneAsync \ngetTryExactlyOneAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-asyncoperations.html#getCountAsync","title":"AsyncOperations.getCountAsync","content":"AsyncOperations.getCountAsync \ngetCountAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-asyncoperations.html#getAggAsync","title":"AsyncOperations.getAggAsync","content":"AsyncOperations.getAggAsync \ngetAggAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema.html","title":"ColumnSchema","content":"ColumnSchema \n \nColumnSchema.CanonicalOp \nCanonicalOp \nColumnSchema.Condition \nCondition \nColumnSchema.ProjectionParameter \nProjectionParameter \nColumnSchema.SqlColumnType \nSqlColumnType \nColumnSchema.SqlItemOrColumn \nSqlItemOrColumn \nColumnSchema.alias \nalias","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html","title":"CanonicalOp","content":"CanonicalOp \n \nCanonicalOp.IsBasicMathOfColumns \nIsBasicMathOfColumns \nCanonicalOp.IsGreatest \nIsGreatest \nCanonicalOp.IsFloor \nIsFloor \nCanonicalOp.IsIndexOfStart \nIsIndexOfStart \nCanonicalOp.IsRoundDecimals \nIsRoundDecimals \nCanonicalOp.IsAbs \nIsAbs \nCanonicalOp.IsDateDiffSecs \nIsDateDiffSecs \nCanonicalOp.IsLeast \nIsLeast \nCanonicalOp.IsLength \nIsLength \nCanonicalOp.IsPow \nIsPow \nCanonicalOp.IsCaseSqlPlain \nIsCaseSqlPlain \nCanonicalOp.IsASin \nIsASin \nCanonicalOp.IsTan \nIsTan \nCanonicalOp.IsCastInt \nIsCastInt \nCanonicalOp.IsCos \nIsCos \nCanonicalOp.IsMinute \nIsMinute \nCanonicalOp.IsSecond \nIsSecond \nCanonicalOp.IsYear \nIsYear \nCanonicalOp.IsDateDiffDays \nIsDateDiffDays \nCanonicalOp.IsMonth \nIsMonth \nCanonicalOp.IsHour \nIsHour \nCanonicalOp.IsCeil \nIsCeil \nCanonicalOp.IsBasicMath \nIsBasicMath \nCanonicalOp.IsSqrt \nIsSqrt \nCanonicalOp.IsSin \nIsSin \nCanonicalOp.IsToUpper \nIsToUpper \nCanonicalOp.IsSubstringWithLength \nIsSubstringWithLength \nCanonicalOp.IsReplace \nIsReplace \nCanonicalOp.IsTruncate \nIsTruncate \nCanonicalOp.IsAddMinutes \nIsAddMinutes \nCanonicalOp.IsTrim \nIsTrim \nCanonicalOp.IsRound \nIsRound \nCanonicalOp.IsSubstring \nIsSubstring \nCanonicalOp.IsCaseSql \nIsCaseSql \nCanonicalOp.IsACos \nIsACos \nCanonicalOp.IsATan \nIsATan \nCanonicalOp.IsIndexOf \nIsIndexOf \nCanonicalOp.IsDay \nIsDay \nCanonicalOp.IsAddHours \nIsAddHours \nCanonicalOp.IsToLower \nIsToLower \nCanonicalOp.IsCastVarchar \nIsCastVarchar \nCanonicalOp.IsDate \nIsDate \nCanonicalOp.IsAddYears \nIsAddYears \nCanonicalOp.IsAddMonths \nIsAddMonths \nCanonicalOp.IsAddDays \nIsAddDays \nCanonicalOp.IsBasicMathLeft \nIsBasicMathLeft \nCanonicalOp.IsPowConst \nIsPowConst \nCanonicalOp.IsCaseNotSql \nIsCaseNotSql \nCanonicalOp.IsAddSeconds \nIsAddSeconds \nCanonicalOp.Substring \nSubstring \nCanonicalOp.SubstringWithLength \nSubstringWithLength \nCanonicalOp.ToUpper \nToUpper \nCanonicalOp.ToLower \nToLower \nCanonicalOp.Trim \nTrim \nCanonicalOp.Length \nLength \nCanonicalOp.Replace \nReplace \nCanonicalOp.IndexOf \nIndexOf \nCanonicalOp.IndexOfStart \nIndexOfStart \nCanonicalOp.Date \nDate \nCanonicalOp.Year \nYear \nCanonicalOp.Month \nMonth \nCanonicalOp.Day \nDay \nCanonicalOp.Hour \nHour \nCanonicalOp.Minute \nMinute \nCanonicalOp.Second \nSecond \nCanonicalOp.AddYears \nAddYears \nCanonicalOp.AddMonths \nAddMonths \nCanonicalOp.AddDays \nAddDays \nCanonicalOp.AddHours \nAddHours \nCanonicalOp.AddMinutes \nAddMinutes \nCanonicalOp.AddSeconds \nAddSeconds \nCanonicalOp.DateDiffDays \nDateDiffDays \nCanonicalOp.DateDiffSecs \nDateDiffSecs \nCanonicalOp.Abs \nAbs \nCanonicalOp.Ceil \nCeil \nCanonicalOp.Floor \nFloor \nCanonicalOp.Round \nRound \nCanonicalOp.RoundDecimals \nRoundDecimals \nCanonicalOp.Truncate \nTruncate \nCanonicalOp.Sqrt \nSqrt \nCanonicalOp.Sin \nSin \nCanonicalOp.Cos \nCos \nCanonicalOp.Tan \nTan \nCanonicalOp.ASin \nASin \nCanonicalOp.ACos \nACos \nCanonicalOp.ATan \nATan \nCanonicalOp.Pow \nPow \nCanonicalOp.PowConst \nPowConst \nCanonicalOp.Greatest \nGreatest \nCanonicalOp.Least \nLeast \nCanonicalOp.BasicMath \nBasicMath \nCanonicalOp.BasicMathLeft \nBasicMathLeft \nCanonicalOp.BasicMathOfColumns \nBasicMathOfColumns \nCanonicalOp.CaseSql \nCaseSql \nCanonicalOp.CaseNotSql \nCaseNotSql \nCanonicalOp.CaseSqlPlain \nCaseSqlPlain \nCanonicalOp.CastVarchar \nCastVarchar \nCanonicalOp.CastInt \nCastInt","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsBasicMathOfColumns","title":"CanonicalOp.IsBasicMathOfColumns","content":"CanonicalOp.IsBasicMathOfColumns \nIsBasicMathOfColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsGreatest","title":"CanonicalOp.IsGreatest","content":"CanonicalOp.IsGreatest \nIsGreatest \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsFloor","title":"CanonicalOp.IsFloor","content":"CanonicalOp.IsFloor \nIsFloor \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsIndexOfStart","title":"CanonicalOp.IsIndexOfStart","content":"CanonicalOp.IsIndexOfStart \nIsIndexOfStart \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsRoundDecimals","title":"CanonicalOp.IsRoundDecimals","content":"CanonicalOp.IsRoundDecimals \nIsRoundDecimals \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsAbs","title":"CanonicalOp.IsAbs","content":"CanonicalOp.IsAbs \nIsAbs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsDateDiffSecs","title":"CanonicalOp.IsDateDiffSecs","content":"CanonicalOp.IsDateDiffSecs \nIsDateDiffSecs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsLeast","title":"CanonicalOp.IsLeast","content":"CanonicalOp.IsLeast \nIsLeast \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsLength","title":"CanonicalOp.IsLength","content":"CanonicalOp.IsLength \nIsLength \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsPow","title":"CanonicalOp.IsPow","content":"CanonicalOp.IsPow \nIsPow \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsCaseSqlPlain","title":"CanonicalOp.IsCaseSqlPlain","content":"CanonicalOp.IsCaseSqlPlain \nIsCaseSqlPlain \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsASin","title":"CanonicalOp.IsASin","content":"CanonicalOp.IsASin \nIsASin \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsTan","title":"CanonicalOp.IsTan","content":"CanonicalOp.IsTan \nIsTan \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsCastInt","title":"CanonicalOp.IsCastInt","content":"CanonicalOp.IsCastInt \nIsCastInt \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsCos","title":"CanonicalOp.IsCos","content":"CanonicalOp.IsCos \nIsCos \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsMinute","title":"CanonicalOp.IsMinute","content":"CanonicalOp.IsMinute \nIsMinute \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsSecond","title":"CanonicalOp.IsSecond","content":"CanonicalOp.IsSecond \nIsSecond \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsYear","title":"CanonicalOp.IsYear","content":"CanonicalOp.IsYear \nIsYear \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsDateDiffDays","title":"CanonicalOp.IsDateDiffDays","content":"CanonicalOp.IsDateDiffDays \nIsDateDiffDays \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsMonth","title":"CanonicalOp.IsMonth","content":"CanonicalOp.IsMonth \nIsMonth \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsHour","title":"CanonicalOp.IsHour","content":"CanonicalOp.IsHour \nIsHour \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsCeil","title":"CanonicalOp.IsCeil","content":"CanonicalOp.IsCeil \nIsCeil \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsBasicMath","title":"CanonicalOp.IsBasicMath","content":"CanonicalOp.IsBasicMath \nIsBasicMath \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsSqrt","title":"CanonicalOp.IsSqrt","content":"CanonicalOp.IsSqrt \nIsSqrt \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsSin","title":"CanonicalOp.IsSin","content":"CanonicalOp.IsSin \nIsSin \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsToUpper","title":"CanonicalOp.IsToUpper","content":"CanonicalOp.IsToUpper \nIsToUpper \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsSubstringWithLength","title":"CanonicalOp.IsSubstringWithLength","content":"CanonicalOp.IsSubstringWithLength \nIsSubstringWithLength \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsReplace","title":"CanonicalOp.IsReplace","content":"CanonicalOp.IsReplace \nIsReplace \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsTruncate","title":"CanonicalOp.IsTruncate","content":"CanonicalOp.IsTruncate \nIsTruncate \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsAddMinutes","title":"CanonicalOp.IsAddMinutes","content":"CanonicalOp.IsAddMinutes \nIsAddMinutes \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsTrim","title":"CanonicalOp.IsTrim","content":"CanonicalOp.IsTrim \nIsTrim \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsRound","title":"CanonicalOp.IsRound","content":"CanonicalOp.IsRound \nIsRound \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsSubstring","title":"CanonicalOp.IsSubstring","content":"CanonicalOp.IsSubstring \nIsSubstring \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsCaseSql","title":"CanonicalOp.IsCaseSql","content":"CanonicalOp.IsCaseSql \nIsCaseSql \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsACos","title":"CanonicalOp.IsACos","content":"CanonicalOp.IsACos \nIsACos \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsATan","title":"CanonicalOp.IsATan","content":"CanonicalOp.IsATan \nIsATan \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsIndexOf","title":"CanonicalOp.IsIndexOf","content":"CanonicalOp.IsIndexOf \nIsIndexOf \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsDay","title":"CanonicalOp.IsDay","content":"CanonicalOp.IsDay \nIsDay \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsAddHours","title":"CanonicalOp.IsAddHours","content":"CanonicalOp.IsAddHours \nIsAddHours \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsToLower","title":"CanonicalOp.IsToLower","content":"CanonicalOp.IsToLower \nIsToLower \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsCastVarchar","title":"CanonicalOp.IsCastVarchar","content":"CanonicalOp.IsCastVarchar \nIsCastVarchar \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsDate","title":"CanonicalOp.IsDate","content":"CanonicalOp.IsDate \nIsDate \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsAddYears","title":"CanonicalOp.IsAddYears","content":"CanonicalOp.IsAddYears \nIsAddYears \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsAddMonths","title":"CanonicalOp.IsAddMonths","content":"CanonicalOp.IsAddMonths \nIsAddMonths \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsAddDays","title":"CanonicalOp.IsAddDays","content":"CanonicalOp.IsAddDays \nIsAddDays \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsBasicMathLeft","title":"CanonicalOp.IsBasicMathLeft","content":"CanonicalOp.IsBasicMathLeft \nIsBasicMathLeft \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsPowConst","title":"CanonicalOp.IsPowConst","content":"CanonicalOp.IsPowConst \nIsPowConst \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsCaseNotSql","title":"CanonicalOp.IsCaseNotSql","content":"CanonicalOp.IsCaseNotSql \nIsCaseNotSql \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IsAddSeconds","title":"CanonicalOp.IsAddSeconds","content":"CanonicalOp.IsAddSeconds \nIsAddSeconds \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Substring","title":"CanonicalOp.Substring","content":"CanonicalOp.Substring \nSubstring \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#SubstringWithLength","title":"CanonicalOp.SubstringWithLength","content":"CanonicalOp.SubstringWithLength \nSubstringWithLength \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#ToUpper","title":"CanonicalOp.ToUpper","content":"CanonicalOp.ToUpper \nToUpper \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#ToLower","title":"CanonicalOp.ToLower","content":"CanonicalOp.ToLower \nToLower \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Trim","title":"CanonicalOp.Trim","content":"CanonicalOp.Trim \nTrim \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Length","title":"CanonicalOp.Length","content":"CanonicalOp.Length \nLength \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Replace","title":"CanonicalOp.Replace","content":"CanonicalOp.Replace \nReplace \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IndexOf","title":"CanonicalOp.IndexOf","content":"CanonicalOp.IndexOf \nIndexOf \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IndexOfStart","title":"CanonicalOp.IndexOfStart","content":"CanonicalOp.IndexOfStart \nIndexOfStart \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Date","title":"CanonicalOp.Date","content":"CanonicalOp.Date \nDate \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Year","title":"CanonicalOp.Year","content":"CanonicalOp.Year \nYear \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Month","title":"CanonicalOp.Month","content":"CanonicalOp.Month \nMonth \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Day","title":"CanonicalOp.Day","content":"CanonicalOp.Day \nDay \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Hour","title":"CanonicalOp.Hour","content":"CanonicalOp.Hour \nHour \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Minute","title":"CanonicalOp.Minute","content":"CanonicalOp.Minute \nMinute \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Second","title":"CanonicalOp.Second","content":"CanonicalOp.Second \nSecond \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#AddYears","title":"CanonicalOp.AddYears","content":"CanonicalOp.AddYears \nAddYears \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#AddMonths","title":"CanonicalOp.AddMonths","content":"CanonicalOp.AddMonths \nAddMonths \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#AddDays","title":"CanonicalOp.AddDays","content":"CanonicalOp.AddDays \nAddDays \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#AddHours","title":"CanonicalOp.AddHours","content":"CanonicalOp.AddHours \nAddHours \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#AddMinutes","title":"CanonicalOp.AddMinutes","content":"CanonicalOp.AddMinutes \nAddMinutes \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#AddSeconds","title":"CanonicalOp.AddSeconds","content":"CanonicalOp.AddSeconds \nAddSeconds \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#DateDiffDays","title":"CanonicalOp.DateDiffDays","content":"CanonicalOp.DateDiffDays \nDateDiffDays \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#DateDiffSecs","title":"CanonicalOp.DateDiffSecs","content":"CanonicalOp.DateDiffSecs \nDateDiffSecs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Abs","title":"CanonicalOp.Abs","content":"CanonicalOp.Abs \nAbs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Ceil","title":"CanonicalOp.Ceil","content":"CanonicalOp.Ceil \nCeil \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Floor","title":"CanonicalOp.Floor","content":"CanonicalOp.Floor \nFloor \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Round","title":"CanonicalOp.Round","content":"CanonicalOp.Round \nRound \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#RoundDecimals","title":"CanonicalOp.RoundDecimals","content":"CanonicalOp.RoundDecimals \nRoundDecimals \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Truncate","title":"CanonicalOp.Truncate","content":"CanonicalOp.Truncate \nTruncate \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Sqrt","title":"CanonicalOp.Sqrt","content":"CanonicalOp.Sqrt \nSqrt \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Sin","title":"CanonicalOp.Sin","content":"CanonicalOp.Sin \nSin \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Cos","title":"CanonicalOp.Cos","content":"CanonicalOp.Cos \nCos \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Tan","title":"CanonicalOp.Tan","content":"CanonicalOp.Tan \nTan \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#ASin","title":"CanonicalOp.ASin","content":"CanonicalOp.ASin \nASin \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#ACos","title":"CanonicalOp.ACos","content":"CanonicalOp.ACos \nACos \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#ATan","title":"CanonicalOp.ATan","content":"CanonicalOp.ATan \nATan \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Pow","title":"CanonicalOp.Pow","content":"CanonicalOp.Pow \nPow \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#PowConst","title":"CanonicalOp.PowConst","content":"CanonicalOp.PowConst \nPowConst \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Greatest","title":"CanonicalOp.Greatest","content":"CanonicalOp.Greatest \nGreatest \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Least","title":"CanonicalOp.Least","content":"CanonicalOp.Least \nLeast \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#BasicMath","title":"CanonicalOp.BasicMath","content":"CanonicalOp.BasicMath \nBasicMath \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#BasicMathLeft","title":"CanonicalOp.BasicMathLeft","content":"CanonicalOp.BasicMathLeft \nBasicMathLeft \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#BasicMathOfColumns","title":"CanonicalOp.BasicMathOfColumns","content":"CanonicalOp.BasicMathOfColumns \nBasicMathOfColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#CaseSql","title":"CanonicalOp.CaseSql","content":"CanonicalOp.CaseSql \nCaseSql \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#CaseNotSql","title":"CanonicalOp.CaseNotSql","content":"CanonicalOp.CaseNotSql \nCaseNotSql \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#CaseSqlPlain","title":"CanonicalOp.CaseSqlPlain","content":"CanonicalOp.CaseSqlPlain \nCaseSqlPlain \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#CastVarchar","title":"CanonicalOp.CastVarchar","content":"CanonicalOp.CastVarchar \nCastVarchar \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#CastInt","title":"CanonicalOp.CastInt","content":"CanonicalOp.CastInt \nCastInt \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html","title":"Condition","content":"Condition \n \nCondition.IsConstantFalse \nIsConstantFalse \nCondition.IsConstantTrue \nIsConstantTrue \nCondition.IsAnd \nIsAnd \nCondition.IsNotSupported \nIsNotSupported \nCondition.IsOr \nIsOr \nCondition.And \nAnd \nCondition.Or \nOr \nCondition.ConstantTrue \nConstantTrue \nCondition.ConstantFalse \nConstantFalse \nCondition.NotSupported \nNotSupported","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html#IsConstantFalse","title":"Condition.IsConstantFalse","content":"Condition.IsConstantFalse \nIsConstantFalse \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html#IsConstantTrue","title":"Condition.IsConstantTrue","content":"Condition.IsConstantTrue \nIsConstantTrue \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html#IsAnd","title":"Condition.IsAnd","content":"Condition.IsAnd \nIsAnd \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html#IsNotSupported","title":"Condition.IsNotSupported","content":"Condition.IsNotSupported \nIsNotSupported \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html#IsOr","title":"Condition.IsOr","content":"Condition.IsOr \nIsOr \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html#And","title":"Condition.And","content":"Condition.And \nAnd \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html#Or","title":"Condition.Or","content":"Condition.Or \nOr \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html#ConstantTrue","title":"Condition.ConstantTrue","content":"Condition.ConstantTrue \nConstantTrue \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html#ConstantFalse","title":"Condition.ConstantFalse","content":"Condition.ConstantFalse \nConstantFalse \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html#NotSupported","title":"Condition.NotSupported","content":"Condition.NotSupported \nNotSupported \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-projectionparameter.html","title":"ProjectionParameter","content":"ProjectionParameter \n \nProjectionParameter.IsOperationColumn \nIsOperationColumn \nProjectionParameter.IsEntityColumn \nIsEntityColumn \nProjectionParameter.EntityColumn \nEntityColumn \nProjectionParameter.OperationColumn \nOperationColumn","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-projectionparameter.html#IsOperationColumn","title":"ProjectionParameter.IsOperationColumn","content":"ProjectionParameter.IsOperationColumn \nIsOperationColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-projectionparameter.html#IsEntityColumn","title":"ProjectionParameter.IsEntityColumn","content":"ProjectionParameter.IsEntityColumn \nIsEntityColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-projectionparameter.html#EntityColumn","title":"ProjectionParameter.EntityColumn","content":"ProjectionParameter.EntityColumn \nEntityColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-projectionparameter.html#OperationColumn","title":"ProjectionParameter.OperationColumn","content":"ProjectionParameter.OperationColumn \nOperationColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlcolumntype.html","title":"SqlColumnType","content":"SqlColumnType \n \nSqlColumnType.IsCanonicalOperation \nIsCanonicalOperation \nSqlColumnType.IsGroupColumn \nIsGroupColumn \nSqlColumnType.IsKeyColumn \nIsKeyColumn \nSqlColumnType.KeyColumn \nKeyColumn \nSqlColumnType.CanonicalOperation \nCanonicalOperation \nSqlColumnType.GroupColumn \nGroupColumn","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlcolumntype.html#IsCanonicalOperation","title":"SqlColumnType.IsCanonicalOperation","content":"SqlColumnType.IsCanonicalOperation \nIsCanonicalOperation \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlcolumntype.html#IsGroupColumn","title":"SqlColumnType.IsGroupColumn","content":"SqlColumnType.IsGroupColumn \nIsGroupColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlcolumntype.html#IsKeyColumn","title":"SqlColumnType.IsKeyColumn","content":"SqlColumnType.IsKeyColumn \nIsKeyColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlcolumntype.html#KeyColumn","title":"SqlColumnType.KeyColumn","content":"SqlColumnType.KeyColumn \nKeyColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlcolumntype.html#CanonicalOperation","title":"SqlColumnType.CanonicalOperation","content":"SqlColumnType.CanonicalOperation \nCanonicalOperation \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlcolumntype.html#GroupColumn","title":"SqlColumnType.GroupColumn","content":"SqlColumnType.GroupColumn \nGroupColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlitemorcolumn.html","title":"SqlItemOrColumn","content":"SqlItemOrColumn \n \nSqlItemOrColumn.IsSqlConstant \nIsSqlConstant \nSqlItemOrColumn.IsSqlCol \nIsSqlCol \nSqlItemOrColumn.SqlCol \nSqlCol \nSqlItemOrColumn.SqlConstant \nSqlConstant","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlitemorcolumn.html#IsSqlConstant","title":"SqlItemOrColumn.IsSqlConstant","content":"SqlItemOrColumn.IsSqlConstant \nIsSqlConstant \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlitemorcolumn.html#IsSqlCol","title":"SqlItemOrColumn.IsSqlCol","content":"SqlItemOrColumn.IsSqlCol \nIsSqlCol \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlitemorcolumn.html#SqlCol","title":"SqlItemOrColumn.SqlCol","content":"SqlItemOrColumn.SqlCol \nSqlCol \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlitemorcolumn.html#SqlConstant","title":"SqlItemOrColumn.SqlConstant","content":"SqlItemOrColumn.SqlConstant \nSqlConstant \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-alias.html","title":"alias","content":"alias \n \nalias.Chars \nChars \nalias.Length \nLength","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-alias.html#Chars","title":"alias.Chars","content":"alias.Chars \nChars \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-alias.html#Length","title":"alias.Length","content":"alias.Length \nLength \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html","title":"DataTable","content":"DataTable \n \nDataTable.map \nmap \nDataTable.iter \niter \nDataTable.toList \ntoList \nDataTable.groupBy \ngroupBy \nDataTable.cache \ncache \nDataTable.mapChoose \nmapChoose \nDataTable.choose \nchoose \nDataTable.filter \nfilter \nDataTable.headers \nheaders \nDataTable.printDataTable \nprintDataTable","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#map","title":"DataTable.map","content":"DataTable.map \nmap \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#iter","title":"DataTable.iter","content":"DataTable.iter \niter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#toList","title":"DataTable.toList","content":"DataTable.toList \ntoList \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#groupBy","title":"DataTable.groupBy","content":"DataTable.groupBy \ngroupBy \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#cache","title":"DataTable.cache","content":"DataTable.cache \ncache \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#mapChoose","title":"DataTable.mapChoose","content":"DataTable.mapChoose \nmapChoose \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#choose","title":"DataTable.choose","content":"DataTable.choose \nchoose \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#filter","title":"DataTable.filter","content":"DataTable.filter \nfilter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#headers","title":"DataTable.headers","content":"DataTable.headers \nheaders \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#printDataTable","title":"DataTable.printDataTable","content":"DataTable.printDataTable \nprintDataTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-list.html","title":"List","content":"List \n \nList.evaluateOneByOne \nevaluateOneByOne \nList.executeQueryAsync \nexecuteQueryAsync","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-list.html#evaluateOneByOne","title":"List.evaluateOneByOne","content":"List.evaluateOneByOne \nevaluateOneByOne \n Helper function to run async computation non-parallel style for list of objects.\n This is needed if async database opreation is executed for a list of entities.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-list.html#executeQueryAsync","title":"List.executeQueryAsync","content":"List.executeQueryAsync \nexecuteQueryAsync \n Execute SQLProvider query and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-operators.html","title":"Operators","content":"Operators \n \nOperators.(|=|) \n(|=|) \nOperators.(|\u003C\u003E|) \n(|\u003C\u003E|) \nOperators.(=%) \n(=%) \nOperators.(\u003C\u003E%) \n(\u003C\u003E%) \nOperators.(!!) \n(!!) \nOperators.StdDev \nStdDev \nOperators.Variance \nVariance","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-operators.html#(|=|)","title":"Operators.(|=|)","content":"Operators.(|=|) \n(|=|) \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-operators.html#(|\u003C\u003E|)","title":"Operators.(|\u003C\u003E|)","content":"Operators.(|\u003C\u003E|) \n(|\u003C\u003E|) \n Not In","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-operators.html#(=%)","title":"Operators.(=%)","content":"Operators.(=%) \n(=%) \n Like","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-operators.html#(\u003C\u003E%)","title":"Operators.(\u003C\u003E%)","content":"Operators.(\u003C\u003E%) \n(\u003C\u003E%) \n Not Like","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-operators.html#(!!)","title":"Operators.(!!)","content":"Operators.(!!) \n(!!) \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-operators.html#StdDev","title":"Operators.StdDev","content":"Operators.StdDev \nStdDev \n Standard Deviation","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-operators.html#Variance","title":"Operators.Variance","content":"Operators.Variance \nVariance \n Variance","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html","title":"QuotationHelpers","content":"QuotationHelpers \n \nQuotationHelpers.coerceValues \ncoerceValues \nQuotationHelpers.simpleTypeExpr \nsimpleTypeExpr \nQuotationHelpers.unionExpr \nunionExpr \nQuotationHelpers.recordExpr \nrecordExpr \nQuotationHelpers.arrayExpr \narrayExpr \nQuotationHelpers.quoteUnion \nquoteUnion \nQuotationHelpers.quoteRecord \nquoteRecord \nQuotationHelpers.quoteArray \nquoteArray","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html#coerceValues","title":"QuotationHelpers.coerceValues","content":"QuotationHelpers.coerceValues \ncoerceValues \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html#simpleTypeExpr","title":"QuotationHelpers.simpleTypeExpr","content":"QuotationHelpers.simpleTypeExpr \nsimpleTypeExpr \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html#unionExpr","title":"QuotationHelpers.unionExpr","content":"QuotationHelpers.unionExpr \nunionExpr \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html#recordExpr","title":"QuotationHelpers.recordExpr","content":"QuotationHelpers.recordExpr \nrecordExpr \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html#arrayExpr","title":"QuotationHelpers.arrayExpr","content":"QuotationHelpers.arrayExpr \narrayExpr \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html#quoteUnion","title":"QuotationHelpers.quoteUnion","content":"QuotationHelpers.quoteUnion \nquoteUnion \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html#quoteRecord","title":"QuotationHelpers.quoteRecord","content":"QuotationHelpers.quoteRecord \nquoteRecord \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html#quoteArray","title":"QuotationHelpers.quoteArray","content":"QuotationHelpers.quoteArray \nquoteArray \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html","title":"Seq","content":"Seq \n \nSeq.executeQueryAsync \nexecuteQueryAsync \nSeq.lengthAsync \nlengthAsync \nSeq.headAsync \nheadAsync \nSeq.tryHeadAsync \ntryHeadAsync \nSeq.sumAsync \nsumAsync \nSeq.maxAsync \nmaxAsync \nSeq.minAsync \nminAsync \nSeq.averageAsync \naverageAsync \nSeq.stdDevAsync \nstdDevAsync \nSeq.varianceAsync \nvarianceAsync \nSeq.\u0060\u0060delete all items from single table\u0060\u0060 \n\u0060\u0060delete all items from single table\u0060\u0060 \nSeq.exactlyOneAsync \nexactlyOneAsync \nSeq.tryExactlyOneAsync \ntryExactlyOneAsync","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#executeQueryAsync","title":"Seq.executeQueryAsync","content":"Seq.executeQueryAsync \nexecuteQueryAsync \n Execute SQLProvider query and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#lengthAsync","title":"Seq.lengthAsync","content":"Seq.lengthAsync \nlengthAsync \n Execute SQLProvider query to count the elements, and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#headAsync","title":"Seq.headAsync","content":"Seq.headAsync \nheadAsync \n Execute SQLProvider query to take one result and release the OS thread while query is being executed.\n Like normal head: Throws exception if no elements exists. See also tryHeadAsync.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#tryHeadAsync","title":"Seq.tryHeadAsync","content":"Seq.tryHeadAsync \ntryHeadAsync \n Execute SQLProvider query to take one result and release the OS thread while query is being executed.\n Returns None if no elements exists.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#sumAsync","title":"Seq.sumAsync","content":"Seq.sumAsync \nsumAsync \n Execute SQLProvider query to get the sum of elements, and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#maxAsync","title":"Seq.maxAsync","content":"Seq.maxAsync \nmaxAsync \n Execute SQLProvider query to get the max of elements, and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#minAsync","title":"Seq.minAsync","content":"Seq.minAsync \nminAsync \n Execute SQLProvider query to get the min of elements, and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#averageAsync","title":"Seq.averageAsync","content":"Seq.averageAsync \naverageAsync \n Execute SQLProvider query to get the avg of elements, and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#stdDevAsync","title":"Seq.stdDevAsync","content":"Seq.stdDevAsync \nstdDevAsync \n Execute SQLProvider query to get the standard deviation of elements, and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#varianceAsync","title":"Seq.varianceAsync","content":"Seq.varianceAsync \nvarianceAsync \n Execute SQLProvider query to get the variance of elements, and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#\u0060\u0060delete all items from single table\u0060\u0060","title":"Seq.\u0060\u0060delete all items from single table\u0060\u0060","content":"Seq.\u0060\u0060delete all items from single table\u0060\u0060 \n\u0060\u0060delete all items from single table\u0060\u0060 \n WARNING! Execute SQLProvider DELETE FROM query to remove elements from the database.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#exactlyOneAsync","title":"Seq.exactlyOneAsync","content":"Seq.exactlyOneAsync \nexactlyOneAsync \n Execute SQLProvider query to get the only element of the sequence.\n Throws \u0060ArgumentNullException\u0060 if the seq is empty.\n Throws \u0060ArgumentException\u0060 if the seq contains more than one element.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#tryExactlyOneAsync","title":"Seq.tryExactlyOneAsync","content":"Seq.tryExactlyOneAsync \ntryExactlyOneAsync \n Execute SQLProvider query to get the only element of the sequence.\n Returns \u0060None\u0060 if there are zero or more than one element in the seq.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html","title":"AggregateOperation","content":"AggregateOperation \n \nAggregateOperation.IsAvgOp \nIsAvgOp \nAggregateOperation.IsMinOp \nIsMinOp \nAggregateOperation.IsMaxOp \nIsMaxOp \nAggregateOperation.IsCountOp \nIsCountOp \nAggregateOperation.IsKeyOp \nIsKeyOp \nAggregateOperation.IsCountDistOp \nIsCountDistOp \nAggregateOperation.IsStdDevOp \nIsStdDevOp \nAggregateOperation.IsVarianceOp \nIsVarianceOp \nAggregateOperation.IsSumOp \nIsSumOp \nAggregateOperation.KeyOp \nKeyOp \nAggregateOperation.MaxOp \nMaxOp \nAggregateOperation.MinOp \nMinOp \nAggregateOperation.SumOp \nSumOp \nAggregateOperation.AvgOp \nAvgOp \nAggregateOperation.CountOp \nCountOp \nAggregateOperation.CountDistOp \nCountDistOp \nAggregateOperation.StdDevOp \nStdDevOp \nAggregateOperation.VarianceOp \nVarianceOp","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#IsAvgOp","title":"AggregateOperation.IsAvgOp","content":"AggregateOperation.IsAvgOp \nIsAvgOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#IsMinOp","title":"AggregateOperation.IsMinOp","content":"AggregateOperation.IsMinOp \nIsMinOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#IsMaxOp","title":"AggregateOperation.IsMaxOp","content":"AggregateOperation.IsMaxOp \nIsMaxOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#IsCountOp","title":"AggregateOperation.IsCountOp","content":"AggregateOperation.IsCountOp \nIsCountOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#IsKeyOp","title":"AggregateOperation.IsKeyOp","content":"AggregateOperation.IsKeyOp \nIsKeyOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#IsCountDistOp","title":"AggregateOperation.IsCountDistOp","content":"AggregateOperation.IsCountDistOp \nIsCountDistOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#IsStdDevOp","title":"AggregateOperation.IsStdDevOp","content":"AggregateOperation.IsStdDevOp \nIsStdDevOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#IsVarianceOp","title":"AggregateOperation.IsVarianceOp","content":"AggregateOperation.IsVarianceOp \nIsVarianceOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#IsSumOp","title":"AggregateOperation.IsSumOp","content":"AggregateOperation.IsSumOp \nIsSumOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#KeyOp","title":"AggregateOperation.KeyOp","content":"AggregateOperation.KeyOp \nKeyOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#MaxOp","title":"AggregateOperation.MaxOp","content":"AggregateOperation.MaxOp \nMaxOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#MinOp","title":"AggregateOperation.MinOp","content":"AggregateOperation.MinOp \nMinOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#SumOp","title":"AggregateOperation.SumOp","content":"AggregateOperation.SumOp \nSumOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#AvgOp","title":"AggregateOperation.AvgOp","content":"AggregateOperation.AvgOp \nAvgOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#CountOp","title":"AggregateOperation.CountOp","content":"AggregateOperation.CountOp \nCountOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#CountDistOp","title":"AggregateOperation.CountDistOp","content":"AggregateOperation.CountDistOp \nCountDistOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#StdDevOp","title":"AggregateOperation.StdDevOp","content":"AggregateOperation.StdDevOp \nStdDevOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#VarianceOp","title":"AggregateOperation.VarianceOp","content":"AggregateOperation.VarianceOp \nVarianceOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html","title":"ConditionOperator","content":"ConditionOperator \n \nConditionOperator.IsNotLike \nIsNotLike \nConditionOperator.IsIsNull \nIsIsNull \nConditionOperator.IsNotIn \nIsNotIn \nConditionOperator.IsNestedNotExists \nIsNestedNotExists \nConditionOperator.IsLessEqual \nIsLessEqual \nConditionOperator.IsGreaterThan \nIsGreaterThan \nConditionOperator.IsNestedIn \nIsNestedIn \nConditionOperator.IsLike \nIsLike \nConditionOperator.IsNestedNotIn \nIsNestedNotIn \nConditionOperator.IsEqual \nIsEqual \nConditionOperator.IsNestedExists \nIsNestedExists \nConditionOperator.IsGreaterEqual \nIsGreaterEqual \nConditionOperator.IsNotEqual \nIsNotEqual \nConditionOperator.IsNotNull \nIsNotNull \nConditionOperator.IsLessThan \nIsLessThan \nConditionOperator.IsIn \nIsIn \nConditionOperator.Like \nLike \nConditionOperator.NotLike \nNotLike \nConditionOperator.Equal \nEqual \nConditionOperator.NotEqual \nNotEqual \nConditionOperator.GreaterThan \nGreaterThan \nConditionOperator.LessThan \nLessThan \nConditionOperator.GreaterEqual \nGreaterEqual \nConditionOperator.LessEqual \nLessEqual \nConditionOperator.IsNull \nIsNull \nConditionOperator.NotNull \nNotNull \nConditionOperator.In \nIn \nConditionOperator.NotIn \nNotIn \nConditionOperator.NestedIn \nNestedIn \nConditionOperator.NestedNotIn \nNestedNotIn \nConditionOperator.NestedExists \nNestedExists \nConditionOperator.NestedNotExists \nNestedNotExists","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsNotLike","title":"ConditionOperator.IsNotLike","content":"ConditionOperator.IsNotLike \nIsNotLike \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsIsNull","title":"ConditionOperator.IsIsNull","content":"ConditionOperator.IsIsNull \nIsIsNull \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsNotIn","title":"ConditionOperator.IsNotIn","content":"ConditionOperator.IsNotIn \nIsNotIn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsNestedNotExists","title":"ConditionOperator.IsNestedNotExists","content":"ConditionOperator.IsNestedNotExists \nIsNestedNotExists \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsLessEqual","title":"ConditionOperator.IsLessEqual","content":"ConditionOperator.IsLessEqual \nIsLessEqual \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsGreaterThan","title":"ConditionOperator.IsGreaterThan","content":"ConditionOperator.IsGreaterThan \nIsGreaterThan \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsNestedIn","title":"ConditionOperator.IsNestedIn","content":"ConditionOperator.IsNestedIn \nIsNestedIn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsLike","title":"ConditionOperator.IsLike","content":"ConditionOperator.IsLike \nIsLike \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsNestedNotIn","title":"ConditionOperator.IsNestedNotIn","content":"ConditionOperator.IsNestedNotIn \nIsNestedNotIn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsEqual","title":"ConditionOperator.IsEqual","content":"ConditionOperator.IsEqual \nIsEqual \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsNestedExists","title":"ConditionOperator.IsNestedExists","content":"ConditionOperator.IsNestedExists \nIsNestedExists \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsGreaterEqual","title":"ConditionOperator.IsGreaterEqual","content":"ConditionOperator.IsGreaterEqual \nIsGreaterEqual \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsNotEqual","title":"ConditionOperator.IsNotEqual","content":"ConditionOperator.IsNotEqual \nIsNotEqual \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsNotNull","title":"ConditionOperator.IsNotNull","content":"ConditionOperator.IsNotNull \nIsNotNull \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsLessThan","title":"ConditionOperator.IsLessThan","content":"ConditionOperator.IsLessThan \nIsLessThan \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsIn","title":"ConditionOperator.IsIn","content":"ConditionOperator.IsIn \nIsIn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#Like","title":"ConditionOperator.Like","content":"ConditionOperator.Like \nLike \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#NotLike","title":"ConditionOperator.NotLike","content":"ConditionOperator.NotLike \nNotLike \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#Equal","title":"ConditionOperator.Equal","content":"ConditionOperator.Equal \nEqual \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#NotEqual","title":"ConditionOperator.NotEqual","content":"ConditionOperator.NotEqual \nNotEqual \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#GreaterThan","title":"ConditionOperator.GreaterThan","content":"ConditionOperator.GreaterThan \nGreaterThan \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#LessThan","title":"ConditionOperator.LessThan","content":"ConditionOperator.LessThan \nLessThan \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#GreaterEqual","title":"ConditionOperator.GreaterEqual","content":"ConditionOperator.GreaterEqual \nGreaterEqual \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#LessEqual","title":"ConditionOperator.LessEqual","content":"ConditionOperator.LessEqual \nLessEqual \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsNull","title":"ConditionOperator.IsNull","content":"ConditionOperator.IsNull \nIsNull \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#NotNull","title":"ConditionOperator.NotNull","content":"ConditionOperator.NotNull \nNotNull \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#In","title":"ConditionOperator.In","content":"ConditionOperator.In \nIn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#NotIn","title":"ConditionOperator.NotIn","content":"ConditionOperator.NotIn \nNotIn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#NestedIn","title":"ConditionOperator.NestedIn","content":"ConditionOperator.NestedIn \nNestedIn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#NestedNotIn","title":"ConditionOperator.NestedNotIn","content":"ConditionOperator.NestedNotIn \nNestedNotIn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#NestedExists","title":"ConditionOperator.NestedExists","content":"ConditionOperator.NestedExists \nNestedExists \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#NestedNotExists","title":"ConditionOperator.NestedNotExists","content":"ConditionOperator.NestedNotExists \nNestedNotExists \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-selectoperations.html","title":"SelectOperations","content":"SelectOperations \n \nSelectOperations.DotNetSide \nDotNetSide \nSelectOperations.DatabaseSide \nDatabaseSide","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-selectoperations.html#DotNetSide","title":"SelectOperations.DotNetSide","content":"SelectOperations.DotNetSide \nDotNetSide \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-selectoperations.html#DatabaseSide","title":"SelectOperations.DatabaseSide","content":"SelectOperations.DatabaseSide \nDatabaseSide \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html","title":"SqlDataProvider","content":"SqlDataProvider \nTyped representation of a database \nSqlDataProvider.DatabaseVendor \nDatabaseVendor \nSqlDataProvider.ConnectionString \nConnectionString \nSqlDataProvider.ConnectionStringName \nConnectionStringName \nSqlDataProvider.ResolutionPath \nResolutionPath \nSqlDataProvider.IndividualsAmount \nIndividualsAmount \nSqlDataProvider.UseOptionTypes \nUseOptionTypes \nSqlDataProvider.Owner \nOwner \nSqlDataProvider.CaseSensitivityChange \nCaseSensitivityChange \nSqlDataProvider.TableNames \nTableNames \nSqlDataProvider.ContextSchemaPath \nContextSchemaPath \nSqlDataProvider.OdbcQuote \nOdbcQuote \nSqlDataProvider.SQLiteLibrary \nSQLiteLibrary \nSqlDataProvider.SsdtPath \nSsdtPath","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#DatabaseVendor","title":"SqlDataProvider.DatabaseVendor","content":"SqlDataProvider.DatabaseVendor \nDatabaseVendor \n The target database vendor","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#ConnectionString","title":"SqlDataProvider.ConnectionString","content":"SqlDataProvider.ConnectionString \nConnectionString \nThe connection string for the SQL database","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#ConnectionStringName","title":"SqlDataProvider.ConnectionStringName","content":"SqlDataProvider.ConnectionStringName \nConnectionStringName \nThe connection string name to select from a configuration file","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#ResolutionPath","title":"SqlDataProvider.ResolutionPath","content":"SqlDataProvider.ResolutionPath \nResolutionPath \nThe location to look for dynamically loaded assemblies containing database vendor specific connections and custom types. Types used in desing-time: If no better clue, prefer .NET Standard 2.0 versions. Semicolon to separate multiple.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#IndividualsAmount","title":"SqlDataProvider.IndividualsAmount","content":"SqlDataProvider.IndividualsAmount \nIndividualsAmount \nThe amount of sample entities to project into the type system for each SQL entity type. Default 50. Note GDPR/PII regulations if using individuals with ContextSchemaPath.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#UseOptionTypes","title":"SqlDataProvider.UseOptionTypes","content":"SqlDataProvider.UseOptionTypes \nUseOptionTypes \nIf set, F# option types will be used in place of nullable database columns. If not, you will always receive the default value of the column\u0027s type even if it is null in the database.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#Owner","title":"SqlDataProvider.Owner","content":"SqlDataProvider.Owner \nOwner \nOracle: The owner of the schema for this provider to resolve. PostgreSQL: A list of schemas to resolve, separated by spaces, newlines, commas, or semicolons.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#CaseSensitivityChange","title":"SqlDataProvider.CaseSensitivityChange","content":"SqlDataProvider.CaseSensitivityChange \nCaseSensitivityChange \nShould we do ToUpper or ToLower when generating table names?","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#TableNames","title":"SqlDataProvider.TableNames","content":"SqlDataProvider.TableNames \nTableNames \nComma separated table names list to limit a number of tables in big instances. The names can have \u0027%\u0027 sign to handle it as in the \u0027LIKE\u0027 query (Oracle and MSSQL Only)","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#ContextSchemaPath","title":"SqlDataProvider.ContextSchemaPath","content":"SqlDataProvider.ContextSchemaPath \nContextSchemaPath \nThe location of the context schema previously saved with SaveContextSchema. When not empty, will be used to populate the database schema instead of retrieving it from then database.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#OdbcQuote","title":"SqlDataProvider.OdbcQuote","content":"SqlDataProvider.OdbcQuote \nOdbcQuote \nOdbc quote characters: Quote characters for the table and column names: \u0060alias\u0060, [alias]","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#SQLiteLibrary","title":"SqlDataProvider.SQLiteLibrary","content":"SqlDataProvider.SQLiteLibrary \nSQLiteLibrary \nUse System.Data.SQLite or Mono.Data.SQLite or select automatically (SQLite only)","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#SsdtPath","title":"SqlDataProvider.SsdtPath","content":"SqlDataProvider.SsdtPath \nSsdtPath \nA path to an SSDT .dacpac file.\u0027","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-bytes.html","title":"Bytes","content":"Bytes \n \nBytes.hash \nhash \nBytes.sha1 \nsha1 \nBytes.sha256 \nsha256","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-bytes.html#hash","title":"Bytes.hash","content":"Bytes.hash \nhash \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-bytes.html#sha1","title":"Bytes.sha1","content":"Bytes.sha1 \nsha1 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-bytes.html#sha256","title":"Bytes.sha256","content":"Bytes.sha256 \nsha256 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-confighelpers.html","title":"ConfigHelpers","content":"ConfigHelpers \n \nConfigHelpers.cachedConStrings \ncachedConStrings \nConfigHelpers.tryGetConnectionString \ntryGetConnectionString","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-confighelpers.html#cachedConStrings","title":"ConfigHelpers.cachedConStrings","content":"ConfigHelpers.cachedConStrings \ncachedConStrings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-confighelpers.html#tryGetConnectionString","title":"ConfigHelpers.tryGetConnectionString","content":"ConfigHelpers.tryGetConnectionString \ntryGetConnectionString \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-offlinetools.html","title":"OfflineTools","content":"OfflineTools \n \nOfflineTools.MockQueryable\u003C\u0027T\u003E \nMockQueryable\u003C\u0027T\u003E \nOfflineTools.mergeCacheFiles \nmergeCacheFiles \nOfflineTools.CreateMockEntities \nCreateMockEntities \nOfflineTools.CreateMockSqlDataContext \nCreateMockSqlDataContext","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-offlinetools.html#mergeCacheFiles","title":"OfflineTools.mergeCacheFiles","content":"OfflineTools.mergeCacheFiles \nmergeCacheFiles \n Merges two ContexSchemaPath offline schema files into one target schema file.\n This is a tool method that can be useful in multi-project solution using the same database with different tables.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-offlinetools.html#CreateMockEntities","title":"OfflineTools.CreateMockEntities","content":"OfflineTools.CreateMockEntities \nCreateMockEntities \n This can be used for testing. Creates de-attached entities..\n Example: FSharp.Data.Sql.Common.OfflineTools.CreateMockEntities \u0022MyTable1\u0022 [| {| MyColumn1 = \u0022a\u0022; MyColumn2 = 0 |} |]","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-offlinetools.html#CreateMockSqlDataContext","title":"OfflineTools.CreateMockSqlDataContext","content":"OfflineTools.CreateMockSqlDataContext \nCreateMockSqlDataContext \n This can be used for testing. Creates fake DB-context entities..\n Example: FSharp.Data.Sql.Common.OfflineTools.CreateMockSqlDataContext [\u0022schema.MyTable1\u0022; [| {| MyColumn1 = \u0022a\u0022; MyColumn2 = 0 |} |] :\u003E obj] |\u003E Map.ofList\n See project unit-test for more examples.\n NOTE: Case-sensitivity. Tables and columns are DB-names, not Linq-names.\n Limitation of mockContext: You cannot Create new entities to the mock context.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-offlinetools-mockqueryable-1.html","title":"MockQueryable\u003C\u0027T\u003E","content":"MockQueryable\u003C\u0027T\u003E \n \nMockQueryable\u003C\u0027T\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-offlinetools-mockqueryable-1.html#\u0060\u0060.ctor\u0060\u0060","title":"MockQueryable\u003C\u0027T\u003E.\u0060\u0060.ctor\u0060\u0060","content":"MockQueryable\u003C\u0027T\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents.html","title":"QueryEvents","content":"QueryEvents \n \nQueryEvents.SqlEventData \nSqlEventData \nQueryEvents.SqlQueryEvent \nSqlQueryEvent \nQueryEvents.LinqExpressionEvent \nLinqExpressionEvent","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents.html#SqlQueryEvent","title":"QueryEvents.SqlQueryEvent","content":"QueryEvents.SqlQueryEvent \nSqlQueryEvent \n This event fires immediately before the execution of every generated query. \n Listen to this event to display or debug the content of your queries.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents.html#LinqExpressionEvent","title":"QueryEvents.LinqExpressionEvent","content":"QueryEvents.LinqExpressionEvent \nLinqExpressionEvent \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents-sqleventdata.html","title":"SqlEventData","content":"SqlEventData \n \nSqlEventData.ToRawSql \nToRawSql \nSqlEventData.ToRawSqlWithParamInfo \nToRawSqlWithParamInfo \nSqlEventData.Command \nCommand \nSqlEventData.Parameters \nParameters \nSqlEventData.ConnectionStringHash \nConnectionStringHash","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents-sqleventdata.html#ToRawSql","title":"SqlEventData.ToRawSql","content":"SqlEventData.ToRawSql \nToRawSql \n Use this to execute similar queries to test the result of the executed query.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents-sqleventdata.html#ToRawSqlWithParamInfo","title":"SqlEventData.ToRawSqlWithParamInfo","content":"SqlEventData.ToRawSqlWithParamInfo \nToRawSqlWithParamInfo \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents-sqleventdata.html#Command","title":"SqlEventData.Command","content":"SqlEventData.Command \nCommand \n The text of the SQL command being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents-sqleventdata.html#Parameters","title":"SqlEventData.Parameters","content":"SqlEventData.Parameters \nParameters \n The parameters (if any) passed to the SQL command being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents-sqleventdata.html#ConnectionStringHash","title":"SqlEventData.ConnectionStringHash","content":"SqlEventData.ConnectionStringHash \nConnectionStringHash \n The SHA256 hash of the UTF8-encoded connection string used to perform this command.\n Use this to determine on which database connection the command is going to be executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html","title":"Sql","content":"Sql \n \nSql.dataReaderToArray \ndataReaderToArray \nSql.dataReaderToArrayAsync \ndataReaderToArrayAsync \nSql.dbUnbox \ndbUnbox \nSql.dbUnboxWithDefault \ndbUnboxWithDefault \nSql.connect \nconnect \nSql.connectAsync \nconnectAsync \nSql.executeSql \nexecuteSql \nSql.executeSqlAsync \nexecuteSqlAsync \nSql.executeSqlAsDataTable \nexecuteSqlAsDataTable \nSql.executeSqlAsDataTableAsync \nexecuteSqlAsDataTableAsync \nSql.ensureOpen \nensureOpen \nSql.evaluateOneByOne \nevaluateOneByOne","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#dataReaderToArray","title":"Sql.dataReaderToArray","content":"Sql.dataReaderToArray \ndataReaderToArray \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#dataReaderToArrayAsync","title":"Sql.dataReaderToArrayAsync","content":"Sql.dataReaderToArrayAsync \ndataReaderToArrayAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#dbUnbox","title":"Sql.dbUnbox","content":"Sql.dbUnbox \ndbUnbox \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#dbUnboxWithDefault","title":"Sql.dbUnboxWithDefault","content":"Sql.dbUnboxWithDefault \ndbUnboxWithDefault \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#connect","title":"Sql.connect","content":"Sql.connect \nconnect \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#connectAsync","title":"Sql.connectAsync","content":"Sql.connectAsync \nconnectAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#executeSql","title":"Sql.executeSql","content":"Sql.executeSql \nexecuteSql \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#executeSqlAsync","title":"Sql.executeSqlAsync","content":"Sql.executeSqlAsync \nexecuteSqlAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#executeSqlAsDataTable","title":"Sql.executeSqlAsDataTable","content":"Sql.executeSqlAsDataTable \nexecuteSqlAsDataTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#executeSqlAsDataTableAsync","title":"Sql.executeSqlAsDataTableAsync","content":"Sql.executeSqlAsDataTableAsync \nexecuteSqlAsDataTableAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#ensureOpen","title":"Sql.ensureOpen","content":"Sql.ensureOpen \nensureOpen \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#evaluateOneByOne","title":"Sql.evaluateOneByOne","content":"Sql.evaluateOneByOne \nevaluateOneByOne \n Helper function to run async computation non-parallel style for list of objects.\n This is needed if async database opreation is executed for a list of entities.\n DB-connections are not usually supporting parallel SQL-query execution, so even when\n async thread is available, it can\u0027t be used to execute another SQL at the same time.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-standardextensions.html","title":"StandardExtensions","content":"StandardExtensions \n \nStandardExtensions.AsEnumerable \nAsEnumerable","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-standardextensions.html#AsEnumerable","title":"StandardExtensions.AsEnumerable","content":"StandardExtensions.AsEnumerable \nAsEnumerable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-stubs.html","title":"Stubs","content":"Stubs \n \nStubs.connection \nconnection","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-stubs.html#connection","title":"Stubs.connection","content":"Stubs.connection \nconnection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-casesensitivitychange.html","title":"CaseSensitivityChange","content":"CaseSensitivityChange \n \nCaseSensitivityChange.ORIGINAL \nORIGINAL \nCaseSensitivityChange.TOUPPER \nTOUPPER \nCaseSensitivityChange.TOLOWER \nTOLOWER","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-casesensitivitychange.html#ORIGINAL","title":"CaseSensitivityChange.ORIGINAL","content":"CaseSensitivityChange.ORIGINAL \nORIGINAL \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-casesensitivitychange.html#TOUPPER","title":"CaseSensitivityChange.TOUPPER","content":"CaseSensitivityChange.TOUPPER \nTOUPPER \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-casesensitivitychange.html#TOLOWER","title":"CaseSensitivityChange.TOLOWER","content":"CaseSensitivityChange.TOLOWER \nTOLOWER \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html","title":"DatabaseProviderTypes","content":"DatabaseProviderTypes \n \nDatabaseProviderTypes.MSSQLSERVER \nMSSQLSERVER \nDatabaseProviderTypes.SQLITE \nSQLITE \nDatabaseProviderTypes.POSTGRESQL \nPOSTGRESQL \nDatabaseProviderTypes.MYSQL \nMYSQL \nDatabaseProviderTypes.ORACLE \nORACLE \nDatabaseProviderTypes.MSACCESS \nMSACCESS \nDatabaseProviderTypes.ODBC \nODBC \nDatabaseProviderTypes.FIREBIRD \nFIREBIRD \nDatabaseProviderTypes.MSSQLSERVER_DYNAMIC \nMSSQLSERVER_DYNAMIC \nDatabaseProviderTypes.MSSQLSERVER_SSDT \nMSSQLSERVER_SSDT \nDatabaseProviderTypes.DUCKDB \nDUCKDB","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#MSSQLSERVER","title":"DatabaseProviderTypes.MSSQLSERVER","content":"DatabaseProviderTypes.MSSQLSERVER \nMSSQLSERVER \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#SQLITE","title":"DatabaseProviderTypes.SQLITE","content":"DatabaseProviderTypes.SQLITE \nSQLITE \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#POSTGRESQL","title":"DatabaseProviderTypes.POSTGRESQL","content":"DatabaseProviderTypes.POSTGRESQL \nPOSTGRESQL \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#MYSQL","title":"DatabaseProviderTypes.MYSQL","content":"DatabaseProviderTypes.MYSQL \nMYSQL \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#ORACLE","title":"DatabaseProviderTypes.ORACLE","content":"DatabaseProviderTypes.ORACLE \nORACLE \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#MSACCESS","title":"DatabaseProviderTypes.MSACCESS","content":"DatabaseProviderTypes.MSACCESS \nMSACCESS \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#ODBC","title":"DatabaseProviderTypes.ODBC","content":"DatabaseProviderTypes.ODBC \nODBC \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#FIREBIRD","title":"DatabaseProviderTypes.FIREBIRD","content":"DatabaseProviderTypes.FIREBIRD \nFIREBIRD \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#MSSQLSERVER_DYNAMIC","title":"DatabaseProviderTypes.MSSQLSERVER_DYNAMIC","content":"DatabaseProviderTypes.MSSQLSERVER_DYNAMIC \nMSSQLSERVER_DYNAMIC \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#MSSQLSERVER_SSDT","title":"DatabaseProviderTypes.MSSQLSERVER_SSDT","content":"DatabaseProviderTypes.MSSQLSERVER_SSDT \nMSSQLSERVER_SSDT \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#DUCKDB","title":"DatabaseProviderTypes.DUCKDB","content":"DatabaseProviderTypes.DUCKDB \nDUCKDB \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html","title":"EntityState","content":"EntityState \n \nEntityState.IsDeleted \nIsDeleted \nEntityState.IsModified \nIsModified \nEntityState.IsUnchanged \nIsUnchanged \nEntityState.IsDelete \nIsDelete \nEntityState.IsCreated \nIsCreated \nEntityState.Unchanged \nUnchanged \nEntityState.Created \nCreated \nEntityState.Modified \nModified \nEntityState.Delete \nDelete \nEntityState.Deleted \nDeleted","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html#IsDeleted","title":"EntityState.IsDeleted","content":"EntityState.IsDeleted \nIsDeleted \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html#IsModified","title":"EntityState.IsModified","content":"EntityState.IsModified \nIsModified \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html#IsUnchanged","title":"EntityState.IsUnchanged","content":"EntityState.IsUnchanged \nIsUnchanged \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html#IsDelete","title":"EntityState.IsDelete","content":"EntityState.IsDelete \nIsDelete \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html#IsCreated","title":"EntityState.IsCreated","content":"EntityState.IsCreated \nIsCreated \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html#Unchanged","title":"EntityState.Unchanged","content":"EntityState.Unchanged \nUnchanged \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html#Created","title":"EntityState.Created","content":"EntityState.Created \nCreated \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html#Modified","title":"EntityState.Modified","content":"EntityState.Modified \nModified \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html#Delete","title":"EntityState.Delete","content":"EntityState.Delete \nDelete \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html#Deleted","title":"EntityState.Deleted","content":"EntityState.Deleted \nDeleted \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupdata.html","title":"GroupData","content":"GroupData \n GroupData is for group-by projections \nGroupData.PrimaryTable \nPrimaryTable \nGroupData.KeyColumns \nKeyColumns \nGroupData.AggregateColumns \nAggregateColumns \nGroupData.Projection \nProjection","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupdata.html#PrimaryTable","title":"GroupData.PrimaryTable","content":"GroupData.PrimaryTable \nPrimaryTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupdata.html#KeyColumns","title":"GroupData.KeyColumns","content":"GroupData.KeyColumns \nKeyColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupdata.html#AggregateColumns","title":"GroupData.AggregateColumns","content":"GroupData.AggregateColumns \nAggregateColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupdata.html#Projection","title":"GroupData.Projection","content":"GroupData.Projection \nProjection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E \n GroupResultItems is an item to create key-igrouping-structure.\n From the select group-by projection, aggregate operations like Enumerable.Count() \n is replaced to GroupResultItems.AggregateCount call and this is used to fetch the \n SQL result instead of actually counting anything \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateAverage \nAggregateAverage \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateAvg \nAggregateAvg \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateCount \nAggregateCount \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateCountDistinct \nAggregateCountDistinct \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateMax \nAggregateMax \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateMin \nAggregateMin \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStDev \nAggregateStDev \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStandardDeviation \nAggregateStandardDeviation \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStdDev \nAggregateStdDev \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateSum \nAggregateSum \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateVariance \nAggregateVariance \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.Values \nValues \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.op_Implicit \nop_Implicit \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.op_Implicit \nop_Implicit","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#\u0060\u0060.ctor\u0060\u0060","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#\u0060\u0060.ctor\u0060\u0060","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#\u0060\u0060.ctor\u0060\u0060","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#\u0060\u0060.ctor\u0060\u0060","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#\u0060\u0060.ctor\u0060\u0060","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#\u0060\u0060.ctor\u0060\u0060","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#\u0060\u0060.ctor\u0060\u0060","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateAverage","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateAverage","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateAverage \nAggregateAverage \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateAvg","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateAvg","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateAvg \nAggregateAvg \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateCount","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateCount","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateCount \nAggregateCount \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateCountDistinct","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateCountDistinct","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateCountDistinct \nAggregateCountDistinct \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateMax","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateMax","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateMax \nAggregateMax \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateMin","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateMin","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateMin \nAggregateMin \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateStDev","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStDev","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStDev \nAggregateStDev \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateStandardDeviation","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStandardDeviation","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStandardDeviation \nAggregateStandardDeviation \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateStdDev","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStdDev","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStdDev \nAggregateStdDev \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateSum","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateSum","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateSum \nAggregateSum \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateVariance","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateVariance","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateVariance \nAggregateVariance \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#Values","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.Values","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.Values \nValues \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#op_Implicit","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.op_Implicit","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.op_Implicit \nop_Implicit \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#op_Implicit","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.op_Implicit","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.op_Implicit \nop_Implicit \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html","title":"ISqlDataContext","content":"ISqlDataContext \n \nISqlDataContext.CallSproc \nCallSproc \nISqlDataContext.CallSprocAsync \nCallSprocAsync \nISqlDataContext.ClearPendingChanges \nClearPendingChanges \nISqlDataContext.CreateConnection \nCreateConnection \nISqlDataContext.CreateEntities \nCreateEntities \nISqlDataContext.CreateEntity \nCreateEntity \nISqlDataContext.CreateRelated \nCreateRelated \nISqlDataContext.GetIndividual \nGetIndividual \nISqlDataContext.GetPendingEntities \nGetPendingEntities \nISqlDataContext.GetPrimaryKeyDefinition \nGetPrimaryKeyDefinition \nISqlDataContext.ReadEntities \nReadEntities \nISqlDataContext.ReadEntitiesAsync \nReadEntitiesAsync \nISqlDataContext.SaveContextSchema \nSaveContextSchema \nISqlDataContext.SubmitChangedEntity \nSubmitChangedEntity \nISqlDataContext.SubmitPendingChanges \nSubmitPendingChanges \nISqlDataContext.SubmitPendingChangesAsync \nSubmitPendingChangesAsync \nISqlDataContext.SqlOperationsInSelect \nSqlOperationsInSelect \nISqlDataContext.CommandTimeout \nCommandTimeout \nISqlDataContext.ConnectionString \nConnectionString","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#CallSproc","title":"ISqlDataContext.CallSproc","content":"ISqlDataContext.CallSproc \nCallSproc \n Call stored procedure: Definition, return columns, values. Returns result.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#CallSprocAsync","title":"ISqlDataContext.CallSprocAsync","content":"ISqlDataContext.CallSprocAsync \nCallSprocAsync \n Call stored procedure: Definition, return columns, values. Returns result task.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#ClearPendingChanges","title":"ISqlDataContext.ClearPendingChanges","content":"ISqlDataContext.ClearPendingChanges \nClearPendingChanges \n Remove changes that are in context.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#CreateConnection","title":"ISqlDataContext.CreateConnection","content":"ISqlDataContext.CreateConnection \nCreateConnection \n return a new, unopened connection using the provided connection string","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#CreateEntities","title":"ISqlDataContext.CreateEntities","content":"ISqlDataContext.CreateEntities \nCreateEntities \n Create entities for a table.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#CreateEntity","title":"ISqlDataContext.CreateEntity","content":"ISqlDataContext.CreateEntity \nCreateEntity \n Takes table-name. Returns new entity.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#CreateRelated","title":"ISqlDataContext.CreateRelated","content":"ISqlDataContext.CreateRelated \nCreateRelated \n CreateRelated: instance, _, primary_table, primary_key, foreing_Table, foreign_key, direction. Returns entities","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#GetIndividual","title":"ISqlDataContext.GetIndividual","content":"ISqlDataContext.GetIndividual \nGetIndividual \n Get individual row. Takes tablename and id.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#GetPendingEntities","title":"ISqlDataContext.GetPendingEntities","content":"ISqlDataContext.GetPendingEntities \nGetPendingEntities \n List changes that are in context.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#GetPrimaryKeyDefinition","title":"ISqlDataContext.GetPrimaryKeyDefinition","content":"ISqlDataContext.GetPrimaryKeyDefinition \nGetPrimaryKeyDefinition \n Give a tablename and this returns the key name","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#ReadEntities","title":"ISqlDataContext.ReadEntities","content":"ISqlDataContext.ReadEntities \nReadEntities \n Read entity. Table name, columns, data-reader. Returns entities.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#ReadEntitiesAsync","title":"ISqlDataContext.ReadEntitiesAsync","content":"ISqlDataContext.ReadEntitiesAsync \nReadEntitiesAsync \n Read entity. Table name, columns, data-reader. Returns entities task.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#SaveContextSchema","title":"ISqlDataContext.SaveContextSchema","content":"ISqlDataContext.SaveContextSchema \nSaveContextSchema \n Save schema offline as Json","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#SubmitChangedEntity","title":"ISqlDataContext.SubmitChangedEntity","content":"ISqlDataContext.SubmitChangedEntity \nSubmitChangedEntity \n Save entity to database.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#SubmitPendingChanges","title":"ISqlDataContext.SubmitPendingChanges","content":"ISqlDataContext.SubmitPendingChanges \nSubmitPendingChanges \n Save database-changes in a transaction to database.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#SubmitPendingChangesAsync","title":"ISqlDataContext.SubmitPendingChangesAsync","content":"ISqlDataContext.SubmitPendingChangesAsync \nSubmitPendingChangesAsync \n Save database-changes in a transaction to database.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#SqlOperationsInSelect","title":"ISqlDataContext.SqlOperationsInSelect","content":"ISqlDataContext.SqlOperationsInSelect \nSqlOperationsInSelect \n Operations of select in SQL-side or in .NET side?","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#CommandTimeout","title":"ISqlDataContext.CommandTimeout","content":"ISqlDataContext.CommandTimeout \nCommandTimeout \n Command timeout (in seconds)","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#ConnectionString","title":"ISqlDataContext.ConnectionString","content":"ISqlDataContext.ConnectionString \nConnectionString \n Connection string to database","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-iwithdatacontext.html","title":"IWithDataContext","content":"IWithDataContext \n This is publically exposed and used in the runtime \nIWithDataContext.DataContext \nDataContext","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-iwithdatacontext.html#DataContext","title":"IWithDataContext.DataContext","content":"IWithDataContext.DataContext \nDataContext \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-linkdata.html","title":"LinkData","content":"LinkData \n LinkData is for joins with SelectMany \nLinkData.Rev \nRev \nLinkData.PrimaryTable \nPrimaryTable \nLinkData.PrimaryKey \nPrimaryKey \nLinkData.ForeignTable \nForeignTable \nLinkData.ForeignKey \nForeignKey \nLinkData.OuterJoin \nOuterJoin \nLinkData.RelDirection \nRelDirection","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-linkdata.html#Rev","title":"LinkData.Rev","content":"LinkData.Rev \nRev \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-linkdata.html#PrimaryTable","title":"LinkData.PrimaryTable","content":"LinkData.PrimaryTable \nPrimaryTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-linkdata.html#PrimaryKey","title":"LinkData.PrimaryKey","content":"LinkData.PrimaryKey \nPrimaryKey \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-linkdata.html#ForeignTable","title":"LinkData.ForeignTable","content":"LinkData.ForeignTable \nForeignTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-linkdata.html#ForeignKey","title":"LinkData.ForeignKey","content":"LinkData.ForeignKey \nForeignKey \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-linkdata.html#OuterJoin","title":"LinkData.OuterJoin","content":"LinkData.OuterJoin \nOuterJoin \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-linkdata.html#RelDirection","title":"LinkData.RelDirection","content":"LinkData.RelDirection \nRelDirection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-mappedcolumnattribute.html","title":"MappedColumnAttribute","content":"MappedColumnAttribute \n \nMappedColumnAttribute.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nMappedColumnAttribute.Name \nName","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-mappedcolumnattribute.html#\u0060\u0060.ctor\u0060\u0060","title":"MappedColumnAttribute.\u0060\u0060.ctor\u0060\u0060","content":"MappedColumnAttribute.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-mappedcolumnattribute.html#Name","title":"MappedColumnAttribute.Name","content":"MappedColumnAttribute.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-nullablecolumntype.html","title":"NullableColumnType","content":"NullableColumnType \n \nNullableColumnType.NO_OPTION \nNO_OPTION \nNullableColumnType.OPTION \nOPTION \nNullableColumnType.VALUE_OPTION \nVALUE_OPTION","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-nullablecolumntype.html#NO_OPTION","title":"NullableColumnType.NO_OPTION","content":"NullableColumnType.NO_OPTION \nNO_OPTION \n Nullable types are just Unchecked default. (Old false.)","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-nullablecolumntype.html#OPTION","title":"NullableColumnType.OPTION","content":"NullableColumnType.OPTION \nOPTION \n Option types are Option\u003C_\u003E. (Old true.)","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-nullablecolumntype.html#VALUE_OPTION","title":"NullableColumnType.VALUE_OPTION","content":"NullableColumnType.VALUE_OPTION \nVALUE_OPTION \n ValueOption is more performant.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-odbcquotecharacter.html","title":"OdbcQuoteCharacter","content":"OdbcQuoteCharacter \n \nOdbcQuoteCharacter.DEFAULT_QUOTE \nDEFAULT_QUOTE \nOdbcQuoteCharacter.GRAVE_ACCENT \nGRAVE_ACCENT \nOdbcQuoteCharacter.SQUARE_BRACKETS \nSQUARE_BRACKETS \nOdbcQuoteCharacter.NO_QUOTES \nNO_QUOTES \nOdbcQuoteCharacter.DOUBLE_QUOTES \nDOUBLE_QUOTES \nOdbcQuoteCharacter.APHOSTROPHE \nAPHOSTROPHE","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-odbcquotecharacter.html#DEFAULT_QUOTE","title":"OdbcQuoteCharacter.DEFAULT_QUOTE","content":"OdbcQuoteCharacter.DEFAULT_QUOTE \nDEFAULT_QUOTE \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-odbcquotecharacter.html#GRAVE_ACCENT","title":"OdbcQuoteCharacter.GRAVE_ACCENT","content":"OdbcQuoteCharacter.GRAVE_ACCENT \nGRAVE_ACCENT \n MySQL/Postgre style: \u0060alias\u0060 ","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-odbcquotecharacter.html#SQUARE_BRACKETS","title":"OdbcQuoteCharacter.SQUARE_BRACKETS","content":"OdbcQuoteCharacter.SQUARE_BRACKETS \nSQUARE_BRACKETS \n Microsoft SQL style: [alias]","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-odbcquotecharacter.html#NO_QUOTES","title":"OdbcQuoteCharacter.NO_QUOTES","content":"OdbcQuoteCharacter.NO_QUOTES \nNO_QUOTES \n Plain, no special names: alias","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-odbcquotecharacter.html#DOUBLE_QUOTES","title":"OdbcQuoteCharacter.DOUBLE_QUOTES","content":"OdbcQuoteCharacter.DOUBLE_QUOTES \nDOUBLE_QUOTES \n Amazon Redshift style: \u0022alias\u0022 \u0026 Firebird style too","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-odbcquotecharacter.html#APHOSTROPHE","title":"OdbcQuoteCharacter.APHOSTROPHE","content":"OdbcQuoteCharacter.APHOSTROPHE \nAPHOSTROPHE \n Single quote: \u0027alias\u0027","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-onconflict.html","title":"OnConflict","content":"OnConflict \n \nOnConflict.IsDoNothing \nIsDoNothing \nOnConflict.IsThrow \nIsThrow \nOnConflict.IsUpdate \nIsUpdate \nOnConflict.Throw \nThrow \nOnConflict.Update \nUpdate \nOnConflict.DoNothing \nDoNothing","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-onconflict.html#IsDoNothing","title":"OnConflict.IsDoNothing","content":"OnConflict.IsDoNothing \nIsDoNothing \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-onconflict.html#IsThrow","title":"OnConflict.IsThrow","content":"OnConflict.IsThrow \nIsThrow \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-onconflict.html#IsUpdate","title":"OnConflict.IsUpdate","content":"OnConflict.IsUpdate \nIsUpdate \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-onconflict.html#Throw","title":"OnConflict.Throw","content":"OnConflict.Throw \nThrow \n Throws an exception if the primary key already exists (default behaviour).","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-onconflict.html#Update","title":"OnConflict.Update","content":"OnConflict.Update \nUpdate \n If the primary key already exists, updates the existing row\u0027s columns to match the new entity.\n Currently supported only on PostgreSQL 9.5\u002B","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-onconflict.html#DoNothing","title":"OnConflict.DoNothing","content":"OnConflict.DoNothing \nDoNothing \n If the primary key already exists, leaves the existing row unchanged.\n Currently supported only on PostgreSQL 9.5\u002B","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-relationshipdirection.html","title":"RelationshipDirection","content":"RelationshipDirection \n \nRelationshipDirection.Children \nChildren \nRelationshipDirection.Parents \nParents","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-relationshipdirection.html#Children","title":"RelationshipDirection.Children","content":"RelationshipDirection.Children \nChildren \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-relationshipdirection.html#Parents","title":"RelationshipDirection.Parents","content":"RelationshipDirection.Parents \nParents \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-resultset.html","title":"ResultSet","content":"ResultSet \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnsettype.html","title":"ReturnSetType","content":"ReturnSetType \n \nReturnSetType.IsScalarResultSet \nIsScalarResultSet \nReturnSetType.IsResultSet \nIsResultSet \nReturnSetType.ScalarResultSet \nScalarResultSet \nReturnSetType.ResultSet \nResultSet","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnsettype.html#IsScalarResultSet","title":"ReturnSetType.IsScalarResultSet","content":"ReturnSetType.IsScalarResultSet \nIsScalarResultSet \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnsettype.html#IsResultSet","title":"ReturnSetType.IsResultSet","content":"ReturnSetType.IsResultSet \nIsResultSet \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnsettype.html#ScalarResultSet","title":"ReturnSetType.ScalarResultSet","content":"ReturnSetType.ScalarResultSet \nScalarResultSet \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnsettype.html#ResultSet","title":"ReturnSetType.ResultSet","content":"ReturnSetType.ResultSet \nResultSet \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnvaluetype.html","title":"ReturnValueType","content":"ReturnValueType \n \nReturnValueType.IsUnit \nIsUnit \nReturnValueType.IsScalar \nIsScalar \nReturnValueType.IsSingleResultSet \nIsSingleResultSet \nReturnValueType.IsSet \nIsSet \nReturnValueType.Unit \nUnit \nReturnValueType.Scalar \nScalar \nReturnValueType.SingleResultSet \nSingleResultSet \nReturnValueType.Set \nSet","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnvaluetype.html#IsUnit","title":"ReturnValueType.IsUnit","content":"ReturnValueType.IsUnit \nIsUnit \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnvaluetype.html#IsScalar","title":"ReturnValueType.IsScalar","content":"ReturnValueType.IsScalar \nIsScalar \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnvaluetype.html#IsSingleResultSet","title":"ReturnValueType.IsSingleResultSet","content":"ReturnValueType.IsSingleResultSet \nIsSingleResultSet \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnvaluetype.html#IsSet","title":"ReturnValueType.IsSet","content":"ReturnValueType.IsSet \nIsSet \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnvaluetype.html#Unit","title":"ReturnValueType.Unit","content":"ReturnValueType.Unit \nUnit \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnvaluetype.html#Scalar","title":"ReturnValueType.Scalar","content":"ReturnValueType.Scalar \nScalar \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnvaluetype.html#SingleResultSet","title":"ReturnValueType.SingleResultSet","content":"ReturnValueType.SingleResultSet \nSingleResultSet \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnvaluetype.html#Set","title":"ReturnValueType.Set","content":"ReturnValueType.Set \nSet \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlitelibrary.html","title":"SQLiteLibrary","content":"SQLiteLibrary \n \nSQLiteLibrary.SystemDataSQLite \nSystemDataSQLite \nSQLiteLibrary.MonoDataSQLite \nMonoDataSQLite \nSQLiteLibrary.AutoSelect \nAutoSelect \nSQLiteLibrary.MicrosoftDataSqlite \nMicrosoftDataSqlite","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlitelibrary.html#SystemDataSQLite","title":"SQLiteLibrary.SystemDataSQLite","content":"SQLiteLibrary.SystemDataSQLite \nSystemDataSQLite \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlitelibrary.html#MonoDataSQLite","title":"SQLiteLibrary.MonoDataSQLite","content":"SQLiteLibrary.MonoDataSQLite \nMonoDataSQLite \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlitelibrary.html#AutoSelect","title":"SQLiteLibrary.AutoSelect","content":"SQLiteLibrary.AutoSelect \nAutoSelect \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlitelibrary.html#MicrosoftDataSqlite","title":"SQLiteLibrary.MicrosoftDataSqlite","content":"SQLiteLibrary.MicrosoftDataSqlite \nMicrosoftDataSqlite \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-selectdata.html","title":"SelectData","content":"SelectData \n \nSelectData.IsLinkQuery \nIsLinkQuery \nSelectData.IsCrossJoin \nIsCrossJoin \nSelectData.IsGroupQuery \nIsGroupQuery \nSelectData.LinkQuery \nLinkQuery \nSelectData.GroupQuery \nGroupQuery \nSelectData.CrossJoin \nCrossJoin","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-selectdata.html#IsLinkQuery","title":"SelectData.IsLinkQuery","content":"SelectData.IsLinkQuery \nIsLinkQuery \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-selectdata.html#IsCrossJoin","title":"SelectData.IsCrossJoin","content":"SelectData.IsCrossJoin \nIsCrossJoin \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-selectdata.html#IsGroupQuery","title":"SelectData.IsGroupQuery","content":"SelectData.IsGroupQuery \nIsGroupQuery \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-selectdata.html#LinkQuery","title":"SelectData.LinkQuery","content":"SelectData.LinkQuery \nLinkQuery \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-selectdata.html#GroupQuery","title":"SelectData.GroupQuery","content":"SelectData.GroupQuery \nGroupQuery \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-selectdata.html#CrossJoin","title":"SelectData.CrossJoin","content":"SelectData.CrossJoin \nCrossJoin \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html","title":"SqlEntity","content":"SqlEntity \n \nSqlEntity.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nSqlEntity.Clone \nClone \nSqlEntity.CloneTo \nCloneTo \nSqlEntity.Delete \nDelete \nSqlEntity.GetColumn \nGetColumn \nSqlEntity.GetColumnOption \nGetColumnOption \nSqlEntity.GetColumnValueOption \nGetColumnValueOption \nSqlEntity.GetPkColumnOption \nGetPkColumnOption \nSqlEntity.HasColumn \nHasColumn \nSqlEntity.HasValue \nHasValue \nSqlEntity.MapTo \nMapTo \nSqlEntity.SetColumn \nSetColumn \nSqlEntity.SetColumnOption \nSetColumnOption \nSqlEntity.SetColumnOptionSilent \nSetColumnOptionSilent \nSqlEntity.SetColumnSilent \nSetColumnSilent \nSqlEntity.SetColumnValueOption \nSetColumnValueOption \nSqlEntity.SetData \nSetData \nSqlEntity.SetPkColumnOptionSilent \nSetPkColumnOptionSilent \nSqlEntity.SetPkColumnSilent \nSetPkColumnSilent \nSqlEntity._State \n_State \nSqlEntity.OnConflict \nOnConflict \nSqlEntity.Table \nTable \nSqlEntity.DataContext \nDataContext \nSqlEntity.ColumnValues \nColumnValues","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#\u0060\u0060.ctor\u0060\u0060","title":"SqlEntity.\u0060\u0060.ctor\u0060\u0060","content":"SqlEntity.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#Clone","title":"SqlEntity.Clone","content":"SqlEntity.Clone \nClone \n Makes a copy of entity (database row), which is a new row with the same columns and values (except Id)\n If column primaty key is something else and not-auto-generated, then, too bad...","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#CloneTo","title":"SqlEntity.CloneTo","content":"SqlEntity.CloneTo \nCloneTo \n Attach/copy entity to a different data-context.\n Second parameter: SQL UPDATE or INSERT clause? \n UPDATE: Updates the exising database entity with the values that this entity contains.\n INSERT: Makes a copy of entity (database row), which is a new row with the same columns and values (except Id)","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#Delete","title":"SqlEntity.Delete","content":"SqlEntity.Delete \nDelete \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#GetColumn","title":"SqlEntity.GetColumn","content":"SqlEntity.GetColumn \nGetColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#GetColumnOption","title":"SqlEntity.GetColumnOption","content":"SqlEntity.GetColumnOption \nGetColumnOption \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#GetColumnValueOption","title":"SqlEntity.GetColumnValueOption","content":"SqlEntity.GetColumnValueOption \nGetColumnValueOption \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#GetPkColumnOption","title":"SqlEntity.GetPkColumnOption","content":"SqlEntity.GetPkColumnOption \nGetPkColumnOption \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#HasColumn","title":"SqlEntity.HasColumn","content":"SqlEntity.HasColumn \nHasColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#HasValue","title":"SqlEntity.HasValue","content":"SqlEntity.HasValue \nHasValue \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#MapTo","title":"SqlEntity.MapTo","content":"SqlEntity.MapTo \nMapTo \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#SetColumn","title":"SqlEntity.SetColumn","content":"SqlEntity.SetColumn \nSetColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#SetColumnOption","title":"SqlEntity.SetColumnOption","content":"SqlEntity.SetColumnOption \nSetColumnOption \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#SetColumnOptionSilent","title":"SqlEntity.SetColumnOptionSilent","content":"SqlEntity.SetColumnOptionSilent \nSetColumnOptionSilent \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#SetColumnSilent","title":"SqlEntity.SetColumnSilent","content":"SqlEntity.SetColumnSilent \nSetColumnSilent \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#SetColumnValueOption","title":"SqlEntity.SetColumnValueOption","content":"SqlEntity.SetColumnValueOption \nSetColumnValueOption \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#SetData","title":"SqlEntity.SetData","content":"SqlEntity.SetData \nSetData \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#SetPkColumnOptionSilent","title":"SqlEntity.SetPkColumnOptionSilent","content":"SqlEntity.SetPkColumnOptionSilent \nSetPkColumnOptionSilent \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#SetPkColumnSilent","title":"SqlEntity.SetPkColumnSilent","content":"SqlEntity.SetPkColumnSilent \nSetPkColumnSilent \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#_State","title":"SqlEntity._State","content":"SqlEntity._State \n_State \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#OnConflict","title":"SqlEntity.OnConflict","content":"SqlEntity.OnConflict \nOnConflict \n Determines what should happen when saving this entity if it is newly-created but another entity with the same primary key already exists","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#Table","title":"SqlEntity.Table","content":"SqlEntity.Table \nTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#DataContext","title":"SqlEntity.DataContext","content":"SqlEntity.DataContext \nDataContext \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#ColumnValues","title":"SqlEntity.ColumnValues","content":"SqlEntity.ColumnValues \nColumnValues \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-uniontype.html","title":"UnionType","content":"UnionType \n \nUnionType.IsIntersect \nIsIntersect \nUnionType.IsUnionAll \nIsUnionAll \nUnionType.IsNormalUnion \nIsNormalUnion \nUnionType.IsExcept \nIsExcept \nUnionType.NormalUnion \nNormalUnion \nUnionType.UnionAll \nUnionAll \nUnionType.Intersect \nIntersect \nUnionType.Except \nExcept","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-uniontype.html#IsIntersect","title":"UnionType.IsIntersect","content":"UnionType.IsIntersect \nIsIntersect \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-uniontype.html#IsUnionAll","title":"UnionType.IsUnionAll","content":"UnionType.IsUnionAll \nIsUnionAll \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-uniontype.html#IsNormalUnion","title":"UnionType.IsNormalUnion","content":"UnionType.IsNormalUnion \nIsNormalUnion \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-uniontype.html#IsExcept","title":"UnionType.IsExcept","content":"UnionType.IsExcept \nIsExcept \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-uniontype.html#NormalUnion","title":"UnionType.NormalUnion","content":"UnionType.NormalUnion \nNormalUnion \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-uniontype.html#UnionAll","title":"UnionType.UnionAll","content":"UnionType.UnionAll \nUnionAll \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-uniontype.html#Intersect","title":"UnionType.Intersect","content":"UnionType.Intersect \nIntersect \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-uniontype.html#Except","title":"UnionType.Except","content":"UnionType.Except \nExcept \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-table.html","title":"table","content":"table \n \ntable.Chars \nChars \ntable.Length \nLength","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-table.html#Chars","title":"table.Chars","content":"table.Chars \nChars \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-table.html#Length","title":"table.Length","content":"table.Length \nLength \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html","title":"DuckDb","content":"DuckDb \n \nDuckDb.resolutionPath \nresolutionPath \nDuckDb.schemas \nschemas \nDuckDb.referencedAssemblies \nreferencedAssemblies \nDuckDb.assemblyNames \nassemblyNames \nDuckDb.assembly \nassembly \nDuckDb.findType \nfindType \nDuckDb.connectionType \nconnectionType \nDuckDb.commandType \ncommandType \nDuckDb.parameterType \nparameterType \nDuckDb.getSchemaMethod \ngetSchemaMethod \nDuckDb.getSchema \ngetSchema \nDuckDb.typeMappings \ntypeMappings \nDuckDb.findClrType \nfindClrType \nDuckDb.findDbType \nfindDbType \nDuckDb.createCommandParameter \ncreateCommandParameter \nDuckDb.createParam \ncreateParam \nDuckDb.fieldNotationAlias \nfieldNotationAlias \nDuckDb.ripQuotes \nripQuotes \nDuckDb.createTypeMappings \ncreateTypeMappings \nDuckDb.createConnection \ncreateConnection \nDuckDb.createCommand \ncreateCommand \nDuckDb.getSprocReturnCols \ngetSprocReturnCols \nDuckDb.getSprocName \ngetSprocName \nDuckDb.getSprocParameters \ngetSprocParameters \nDuckDb.getSprocs \ngetSprocs \nDuckDb.readParameter \nreadParameter \nDuckDb.processReturnColumn \nprocessReturnColumn \nDuckDb.processReturnColumnAsync \nprocessReturnColumnAsync \nDuckDb.executeSprocCommandCommon \nexecuteSprocCommandCommon \nDuckDb.executeSprocCommand \nexecuteSprocCommand \nDuckDb.executeSprocCommandAsync \nexecuteSprocCommandAsync","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#resolutionPath","title":"DuckDb.resolutionPath","content":"DuckDb.resolutionPath \nresolutionPath \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#schemas","title":"DuckDb.schemas","content":"DuckDb.schemas \nschemas \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#referencedAssemblies","title":"DuckDb.referencedAssemblies","content":"DuckDb.referencedAssemblies \nreferencedAssemblies \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#assemblyNames","title":"DuckDb.assemblyNames","content":"DuckDb.assemblyNames \nassemblyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#assembly","title":"DuckDb.assembly","content":"DuckDb.assembly \nassembly \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#findType","title":"DuckDb.findType","content":"DuckDb.findType \nfindType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#connectionType","title":"DuckDb.connectionType","content":"DuckDb.connectionType \nconnectionType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#commandType","title":"DuckDb.commandType","content":"DuckDb.commandType \ncommandType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#parameterType","title":"DuckDb.parameterType","content":"DuckDb.parameterType \nparameterType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#getSchemaMethod","title":"DuckDb.getSchemaMethod","content":"DuckDb.getSchemaMethod \ngetSchemaMethod \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#getSchema","title":"DuckDb.getSchema","content":"DuckDb.getSchema \ngetSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#typeMappings","title":"DuckDb.typeMappings","content":"DuckDb.typeMappings \ntypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#findClrType","title":"DuckDb.findClrType","content":"DuckDb.findClrType \nfindClrType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#findDbType","title":"DuckDb.findDbType","content":"DuckDb.findDbType \nfindDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#createCommandParameter","title":"DuckDb.createCommandParameter","content":"DuckDb.createCommandParameter \ncreateCommandParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#createParam","title":"DuckDb.createParam","content":"DuckDb.createParam \ncreateParam \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#fieldNotationAlias","title":"DuckDb.fieldNotationAlias","content":"DuckDb.fieldNotationAlias \nfieldNotationAlias \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#ripQuotes","title":"DuckDb.ripQuotes","content":"DuckDb.ripQuotes \nripQuotes \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#createTypeMappings","title":"DuckDb.createTypeMappings","content":"DuckDb.createTypeMappings \ncreateTypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#createConnection","title":"DuckDb.createConnection","content":"DuckDb.createConnection \ncreateConnection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#createCommand","title":"DuckDb.createCommand","content":"DuckDb.createCommand \ncreateCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#getSprocReturnCols","title":"DuckDb.getSprocReturnCols","content":"DuckDb.getSprocReturnCols \ngetSprocReturnCols \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#getSprocName","title":"DuckDb.getSprocName","content":"DuckDb.getSprocName \ngetSprocName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#getSprocParameters","title":"DuckDb.getSprocParameters","content":"DuckDb.getSprocParameters \ngetSprocParameters \n DuckDB doesn\u0027t support sprocs yet.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#getSprocs","title":"DuckDb.getSprocs","content":"DuckDb.getSprocs \ngetSprocs \n DuckDB doesn\u0027t support sprocs yet.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#readParameter","title":"DuckDb.readParameter","content":"DuckDb.readParameter \nreadParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#processReturnColumn","title":"DuckDb.processReturnColumn","content":"DuckDb.processReturnColumn \nprocessReturnColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#processReturnColumnAsync","title":"DuckDb.processReturnColumnAsync","content":"DuckDb.processReturnColumnAsync \nprocessReturnColumnAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#executeSprocCommandCommon","title":"DuckDb.executeSprocCommandCommon","content":"DuckDb.executeSprocCommandCommon \nexecuteSprocCommandCommon \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#executeSprocCommand","title":"DuckDb.executeSprocCommand","content":"DuckDb.executeSprocCommand \nexecuteSprocCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#executeSprocCommandAsync","title":"DuckDb.executeSprocCommandAsync","content":"DuckDb.executeSprocCommandAsync \nexecuteSprocCommandAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html","title":"Firebird","content":"Firebird \n \nFirebird.DataReaderWithCommand \nDataReaderWithCommand \nFirebird.resolutionPath \nresolutionPath \nFirebird.owner \nowner \nFirebird.referencedAssemblies \nreferencedAssemblies \nFirebird.assemblyNames \nassemblyNames \nFirebird.assembly \nassembly \nFirebird.executeSql \nexecuteSql \nFirebird.executeSqlAsDataTable \nexecuteSqlAsDataTable \nFirebird.executeSqlAsync \nexecuteSqlAsync \nFirebird.executeSqlAsDataTableAsync \nexecuteSqlAsDataTableAsync \nFirebird.findType \nfindType \nFirebird.connectionType \nconnectionType \nFirebird.commandType \ncommandType \nFirebird.parameterType \nparameterType \nFirebird.enumType \nenumType \nFirebird.getSchemaMethod \ngetSchemaMethod \nFirebird.paramEnumCtor \nparamEnumCtor \nFirebird.paramObjectCtor \nparamObjectCtor \nFirebird.getSchema \ngetSchema \nFirebird.typeMappings \ntypeMappings \nFirebird.findClrType \nfindClrType \nFirebird.findDbType \nfindDbType \nFirebird.createCommandParameter \ncreateCommandParameter \nFirebird.createParam \ncreateParam \nFirebird.fieldNotationAlias \nfieldNotationAlias \nFirebird.ripQuotes \nripQuotes \nFirebird.createTypeMappings \ncreateTypeMappings \nFirebird.createConnection \ncreateConnection \nFirebird.createCommand \ncreateCommand \nFirebird.getSprocReturnCols \ngetSprocReturnCols \nFirebird.getSprocName \ngetSprocName \nFirebird.sqlTypeName \nsqlTypeName \nFirebird.getSprocParameters \ngetSprocParameters \nFirebird.getSprocs \ngetSprocs \nFirebird.readParameter \nreadParameter \nFirebird.processReturnColumn \nprocessReturnColumn \nFirebird.processReturnColumnAsync \nprocessReturnColumnAsync \nFirebird.executeSprocCommandCommon \nexecuteSprocCommandCommon \nFirebird.executeSprocCommand \nexecuteSprocCommand \nFirebird.executeSprocCommandAsync \nexecuteSprocCommandAsync","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#resolutionPath","title":"Firebird.resolutionPath","content":"Firebird.resolutionPath \nresolutionPath \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#owner","title":"Firebird.owner","content":"Firebird.owner \nowner \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#referencedAssemblies","title":"Firebird.referencedAssemblies","content":"Firebird.referencedAssemblies \nreferencedAssemblies \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#assemblyNames","title":"Firebird.assemblyNames","content":"Firebird.assemblyNames \nassemblyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#assembly","title":"Firebird.assembly","content":"Firebird.assembly \nassembly \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#executeSql","title":"Firebird.executeSql","content":"Firebird.executeSql \nexecuteSql \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#executeSqlAsDataTable","title":"Firebird.executeSqlAsDataTable","content":"Firebird.executeSqlAsDataTable \nexecuteSqlAsDataTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#executeSqlAsync","title":"Firebird.executeSqlAsync","content":"Firebird.executeSqlAsync \nexecuteSqlAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#executeSqlAsDataTableAsync","title":"Firebird.executeSqlAsDataTableAsync","content":"Firebird.executeSqlAsDataTableAsync \nexecuteSqlAsDataTableAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#findType","title":"Firebird.findType","content":"Firebird.findType \nfindType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#connectionType","title":"Firebird.connectionType","content":"Firebird.connectionType \nconnectionType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#commandType","title":"Firebird.commandType","content":"Firebird.commandType \ncommandType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#parameterType","title":"Firebird.parameterType","content":"Firebird.parameterType \nparameterType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#enumType","title":"Firebird.enumType","content":"Firebird.enumType \nenumType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#getSchemaMethod","title":"Firebird.getSchemaMethod","content":"Firebird.getSchemaMethod \ngetSchemaMethod \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#paramEnumCtor","title":"Firebird.paramEnumCtor","content":"Firebird.paramEnumCtor \nparamEnumCtor \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#paramObjectCtor","title":"Firebird.paramObjectCtor","content":"Firebird.paramObjectCtor \nparamObjectCtor \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#getSchema","title":"Firebird.getSchema","content":"Firebird.getSchema \ngetSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#typeMappings","title":"Firebird.typeMappings","content":"Firebird.typeMappings \ntypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#findClrType","title":"Firebird.findClrType","content":"Firebird.findClrType \nfindClrType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#findDbType","title":"Firebird.findDbType","content":"Firebird.findDbType \nfindDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#createCommandParameter","title":"Firebird.createCommandParameter","content":"Firebird.createCommandParameter \ncreateCommandParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#createParam","title":"Firebird.createParam","content":"Firebird.createParam \ncreateParam \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#fieldNotationAlias","title":"Firebird.fieldNotationAlias","content":"Firebird.fieldNotationAlias \nfieldNotationAlias \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#ripQuotes","title":"Firebird.ripQuotes","content":"Firebird.ripQuotes \nripQuotes \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#createTypeMappings","title":"Firebird.createTypeMappings","content":"Firebird.createTypeMappings \ncreateTypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#createConnection","title":"Firebird.createConnection","content":"Firebird.createConnection \ncreateConnection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#createCommand","title":"Firebird.createCommand","content":"Firebird.createCommand \ncreateCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#getSprocReturnCols","title":"Firebird.getSprocReturnCols","content":"Firebird.getSprocReturnCols \ngetSprocReturnCols \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#getSprocName","title":"Firebird.getSprocName","content":"Firebird.getSprocName \ngetSprocName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#sqlTypeName","title":"Firebird.sqlTypeName","content":"Firebird.sqlTypeName \nsqlTypeName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#getSprocParameters","title":"Firebird.getSprocParameters","content":"Firebird.getSprocParameters \ngetSprocParameters \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#getSprocs","title":"Firebird.getSprocs","content":"Firebird.getSprocs \ngetSprocs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#readParameter","title":"Firebird.readParameter","content":"Firebird.readParameter \nreadParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#processReturnColumn","title":"Firebird.processReturnColumn","content":"Firebird.processReturnColumn \nprocessReturnColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#processReturnColumnAsync","title":"Firebird.processReturnColumnAsync","content":"Firebird.processReturnColumnAsync \nprocessReturnColumnAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#executeSprocCommandCommon","title":"Firebird.executeSprocCommandCommon","content":"Firebird.executeSprocCommandCommon \nexecuteSprocCommandCommon \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#executeSprocCommand","title":"Firebird.executeSprocCommand","content":"Firebird.executeSprocCommand \nexecuteSprocCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#executeSprocCommandAsync","title":"Firebird.executeSprocCommandAsync","content":"Firebird.executeSprocCommandAsync \nexecuteSprocCommandAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird-datareaderwithcommand.html","title":"DataReaderWithCommand","content":"DataReaderWithCommand \n \nDataReaderWithCommand.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nDataReaderWithCommand.Command \nCommand \nDataReaderWithCommand.DataReader \nDataReader","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird-datareaderwithcommand.html#\u0060\u0060.ctor\u0060\u0060","title":"DataReaderWithCommand.\u0060\u0060.ctor\u0060\u0060","content":"DataReaderWithCommand.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird-datareaderwithcommand.html#Command","title":"DataReaderWithCommand.Command","content":"DataReaderWithCommand.Command \nCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird-datareaderwithcommand.html#DataReader","title":"DataReaderWithCommand.DataReader","content":"DataReaderWithCommand.DataReader \nDataReader \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html","title":"MSSqlServer","content":"MSSqlServer \n \nMSSqlServer.getSchema \ngetSchema \nMSSqlServer.typeMappings \ntypeMappings \nMSSqlServer.findClrType \nfindClrType \nMSSqlServer.findDbType \nfindDbType \nMSSqlServer.createTypeMappings \ncreateTypeMappings \nMSSqlServer.checkIfMsSqlAssemblyIsDesingOnly \ncheckIfMsSqlAssemblyIsDesingOnly \nMSSqlServer.createConnection \ncreateConnection \nMSSqlServer.createCommand \ncreateCommand \nMSSqlServer.dbUnbox \ndbUnbox \nMSSqlServer.dbUnboxWithDefault \ndbUnboxWithDefault \nMSSqlServer.connect \nconnect \nMSSqlServer.executeSql \nexecuteSql \nMSSqlServer.readParameter \nreadParameter \nMSSqlServer.readInOutParameterFromCommand \nreadInOutParameterFromCommand \nMSSqlServer.createOpenParameter \ncreateOpenParameter \nMSSqlServer.createCommandParameter \ncreateCommandParameter \nMSSqlServer.getSprocReturnCols \ngetSprocReturnCols \nMSSqlServer.getSprocName \ngetSprocName \nMSSqlServer.getSprocParameters \ngetSprocParameters \nMSSqlServer.getSprocs \ngetSprocs \nMSSqlServer.processReturnColumn \nprocessReturnColumn \nMSSqlServer.processReturnColumnAsync \nprocessReturnColumnAsync \nMSSqlServer.executeSprocCommandCommon \nexecuteSprocCommandCommon \nMSSqlServer.executeSprocCommand \nexecuteSprocCommand \nMSSqlServer.executeSprocCommandAsync \nexecuteSprocCommandAsync \nMSSqlServer.fieldNotationAlias \nfieldNotationAlias","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#getSchema","title":"MSSqlServer.getSchema","content":"MSSqlServer.getSchema \ngetSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#typeMappings","title":"MSSqlServer.typeMappings","content":"MSSqlServer.typeMappings \ntypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#findClrType","title":"MSSqlServer.findClrType","content":"MSSqlServer.findClrType \nfindClrType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#findDbType","title":"MSSqlServer.findDbType","content":"MSSqlServer.findDbType \nfindDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#createTypeMappings","title":"MSSqlServer.createTypeMappings","content":"MSSqlServer.createTypeMappings \ncreateTypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#checkIfMsSqlAssemblyIsDesingOnly","title":"MSSqlServer.checkIfMsSqlAssemblyIsDesingOnly","content":"MSSqlServer.checkIfMsSqlAssemblyIsDesingOnly \ncheckIfMsSqlAssemblyIsDesingOnly \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#createConnection","title":"MSSqlServer.createConnection","content":"MSSqlServer.createConnection \ncreateConnection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#createCommand","title":"MSSqlServer.createCommand","content":"MSSqlServer.createCommand \ncreateCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#dbUnbox","title":"MSSqlServer.dbUnbox","content":"MSSqlServer.dbUnbox \ndbUnbox \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#dbUnboxWithDefault","title":"MSSqlServer.dbUnboxWithDefault","content":"MSSqlServer.dbUnboxWithDefault \ndbUnboxWithDefault \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#connect","title":"MSSqlServer.connect","content":"MSSqlServer.connect \nconnect \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#executeSql","title":"MSSqlServer.executeSql","content":"MSSqlServer.executeSql \nexecuteSql \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#readParameter","title":"MSSqlServer.readParameter","content":"MSSqlServer.readParameter \nreadParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#readInOutParameterFromCommand","title":"MSSqlServer.readInOutParameterFromCommand","content":"MSSqlServer.readInOutParameterFromCommand \nreadInOutParameterFromCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#createOpenParameter","title":"MSSqlServer.createOpenParameter","content":"MSSqlServer.createOpenParameter \ncreateOpenParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#createCommandParameter","title":"MSSqlServer.createCommandParameter","content":"MSSqlServer.createCommandParameter \ncreateCommandParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#getSprocReturnCols","title":"MSSqlServer.getSprocReturnCols","content":"MSSqlServer.getSprocReturnCols \ngetSprocReturnCols \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#getSprocName","title":"MSSqlServer.getSprocName","content":"MSSqlServer.getSprocName \ngetSprocName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#getSprocParameters","title":"MSSqlServer.getSprocParameters","content":"MSSqlServer.getSprocParameters \ngetSprocParameters \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#getSprocs","title":"MSSqlServer.getSprocs","content":"MSSqlServer.getSprocs \ngetSprocs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#processReturnColumn","title":"MSSqlServer.processReturnColumn","content":"MSSqlServer.processReturnColumn \nprocessReturnColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#processReturnColumnAsync","title":"MSSqlServer.processReturnColumnAsync","content":"MSSqlServer.processReturnColumnAsync \nprocessReturnColumnAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#executeSprocCommandCommon","title":"MSSqlServer.executeSprocCommandCommon","content":"MSSqlServer.executeSprocCommandCommon \nexecuteSprocCommandCommon \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#executeSprocCommand","title":"MSSqlServer.executeSprocCommand","content":"MSSqlServer.executeSprocCommand \nexecuteSprocCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#executeSprocCommandAsync","title":"MSSqlServer.executeSprocCommandAsync","content":"MSSqlServer.executeSprocCommandAsync \nexecuteSprocCommandAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#fieldNotationAlias","title":"MSSqlServer.fieldNotationAlias","content":"MSSqlServer.fieldNotationAlias \nfieldNotationAlias \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html","title":"MSSqlServerDynamic","content":"MSSqlServerDynamic \n \nMSSqlServerDynamic.resolutionPath \nresolutionPath \nMSSqlServerDynamic.referencedAssemblies \nreferencedAssemblies \nMSSqlServerDynamic.assemblyNames \nassemblyNames \nMSSqlServerDynamic.assembly \nassembly \nMSSqlServerDynamic.findType \nfindType \nMSSqlServerDynamic.connectionType \nconnectionType \nMSSqlServerDynamic.commandType \ncommandType \nMSSqlServerDynamic.parameterType \nparameterType \nMSSqlServerDynamic.enumType \nenumType \nMSSqlServerDynamic.getSchemaMethod \ngetSchemaMethod \nMSSqlServerDynamic.getSchema \ngetSchema \nMSSqlServerDynamic.parseDbType \nparseDbType \nMSSqlServerDynamic.typeMappings \ntypeMappings \nMSSqlServerDynamic.findClrType \nfindClrType \nMSSqlServerDynamic.findDbType \nfindDbType \nMSSqlServerDynamic.createTypeMappings \ncreateTypeMappings \nMSSqlServerDynamic.createConnection \ncreateConnection \nMSSqlServerDynamic.createCommand \ncreateCommand \nMSSqlServerDynamic.dbUnbox \ndbUnbox \nMSSqlServerDynamic.dbUnboxWithDefault \ndbUnboxWithDefault \nMSSqlServerDynamic.connect \nconnect \nMSSqlServerDynamic.executeSql \nexecuteSql \nMSSqlServerDynamic.readParameter \nreadParameter \nMSSqlServerDynamic.readInOutParameterFromCommand \nreadInOutParameterFromCommand \nMSSqlServerDynamic.createOpenParameter \ncreateOpenParameter \nMSSqlServerDynamic.createCommandParameter \ncreateCommandParameter \nMSSqlServerDynamic.getSprocReturnCols \ngetSprocReturnCols \nMSSqlServerDynamic.getSprocName \ngetSprocName \nMSSqlServerDynamic.getSprocParameters \ngetSprocParameters \nMSSqlServerDynamic.getSprocs \ngetSprocs \nMSSqlServerDynamic.processReturnColumn \nprocessReturnColumn \nMSSqlServerDynamic.processReturnColumnAsync \nprocessReturnColumnAsync \nMSSqlServerDynamic.executeSprocCommandCommon \nexecuteSprocCommandCommon \nMSSqlServerDynamic.executeSprocCommand \nexecuteSprocCommand \nMSSqlServerDynamic.executeSprocCommandAsync \nexecuteSprocCommandAsync","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#resolutionPath","title":"MSSqlServerDynamic.resolutionPath","content":"MSSqlServerDynamic.resolutionPath \nresolutionPath \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#referencedAssemblies","title":"MSSqlServerDynamic.referencedAssemblies","content":"MSSqlServerDynamic.referencedAssemblies \nreferencedAssemblies \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#assemblyNames","title":"MSSqlServerDynamic.assemblyNames","content":"MSSqlServerDynamic.assemblyNames \nassemblyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#assembly","title":"MSSqlServerDynamic.assembly","content":"MSSqlServerDynamic.assembly \nassembly \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#findType","title":"MSSqlServerDynamic.findType","content":"MSSqlServerDynamic.findType \nfindType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#connectionType","title":"MSSqlServerDynamic.connectionType","content":"MSSqlServerDynamic.connectionType \nconnectionType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#commandType","title":"MSSqlServerDynamic.commandType","content":"MSSqlServerDynamic.commandType \ncommandType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#parameterType","title":"MSSqlServerDynamic.parameterType","content":"MSSqlServerDynamic.parameterType \nparameterType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#enumType","title":"MSSqlServerDynamic.enumType","content":"MSSqlServerDynamic.enumType \nenumType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#getSchemaMethod","title":"MSSqlServerDynamic.getSchemaMethod","content":"MSSqlServerDynamic.getSchemaMethod \ngetSchemaMethod \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#getSchema","title":"MSSqlServerDynamic.getSchema","content":"MSSqlServerDynamic.getSchema \ngetSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#parseDbType","title":"MSSqlServerDynamic.parseDbType","content":"MSSqlServerDynamic.parseDbType \nparseDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#typeMappings","title":"MSSqlServerDynamic.typeMappings","content":"MSSqlServerDynamic.typeMappings \ntypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#findClrType","title":"MSSqlServerDynamic.findClrType","content":"MSSqlServerDynamic.findClrType \nfindClrType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#findDbType","title":"MSSqlServerDynamic.findDbType","content":"MSSqlServerDynamic.findDbType \nfindDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#createTypeMappings","title":"MSSqlServerDynamic.createTypeMappings","content":"MSSqlServerDynamic.createTypeMappings \ncreateTypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#createConnection","title":"MSSqlServerDynamic.createConnection","content":"MSSqlServerDynamic.createConnection \ncreateConnection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#createCommand","title":"MSSqlServerDynamic.createCommand","content":"MSSqlServerDynamic.createCommand \ncreateCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#dbUnbox","title":"MSSqlServerDynamic.dbUnbox","content":"MSSqlServerDynamic.dbUnbox \ndbUnbox \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#dbUnboxWithDefault","title":"MSSqlServerDynamic.dbUnboxWithDefault","content":"MSSqlServerDynamic.dbUnboxWithDefault \ndbUnboxWithDefault \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#connect","title":"MSSqlServerDynamic.connect","content":"MSSqlServerDynamic.connect \nconnect \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#executeSql","title":"MSSqlServerDynamic.executeSql","content":"MSSqlServerDynamic.executeSql \nexecuteSql \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#readParameter","title":"MSSqlServerDynamic.readParameter","content":"MSSqlServerDynamic.readParameter \nreadParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#readInOutParameterFromCommand","title":"MSSqlServerDynamic.readInOutParameterFromCommand","content":"MSSqlServerDynamic.readInOutParameterFromCommand \nreadInOutParameterFromCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#createOpenParameter","title":"MSSqlServerDynamic.createOpenParameter","content":"MSSqlServerDynamic.createOpenParameter \ncreateOpenParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#createCommandParameter","title":"MSSqlServerDynamic.createCommandParameter","content":"MSSqlServerDynamic.createCommandParameter \ncreateCommandParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#getSprocReturnCols","title":"MSSqlServerDynamic.getSprocReturnCols","content":"MSSqlServerDynamic.getSprocReturnCols \ngetSprocReturnCols \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#getSprocName","title":"MSSqlServerDynamic.getSprocName","content":"MSSqlServerDynamic.getSprocName \ngetSprocName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#getSprocParameters","title":"MSSqlServerDynamic.getSprocParameters","content":"MSSqlServerDynamic.getSprocParameters \ngetSprocParameters \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#getSprocs","title":"MSSqlServerDynamic.getSprocs","content":"MSSqlServerDynamic.getSprocs \ngetSprocs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#processReturnColumn","title":"MSSqlServerDynamic.processReturnColumn","content":"MSSqlServerDynamic.processReturnColumn \nprocessReturnColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#processReturnColumnAsync","title":"MSSqlServerDynamic.processReturnColumnAsync","content":"MSSqlServerDynamic.processReturnColumnAsync \nprocessReturnColumnAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#executeSprocCommandCommon","title":"MSSqlServerDynamic.executeSprocCommandCommon","content":"MSSqlServerDynamic.executeSprocCommandCommon \nexecuteSprocCommandCommon \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#executeSprocCommand","title":"MSSqlServerDynamic.executeSprocCommand","content":"MSSqlServerDynamic.executeSprocCommand \nexecuteSprocCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#executeSprocCommandAsync","title":"MSSqlServerDynamic.executeSprocCommandAsync","content":"MSSqlServerDynamic.executeSprocCommandAsync \nexecuteSprocCommandAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html","title":"MSSqlServerSsdt","content":"MSSqlServerSsdt \n \nMSSqlServerSsdt.DACPAC_SEARCH_PATH_ENV_VAR_NAME \nDACPAC_SEARCH_PATH_ENV_VAR_NAME \nMSSqlServerSsdt.findDacPacFile \nfindDacPacFile \nMSSqlServerSsdt.parseDacpac \nparseDacpac \nMSSqlServerSsdt.typeMappingsByName \ntypeMappingsByName \nMSSqlServerSsdt.tryFindMapping \ntryFindMapping \nMSSqlServerSsdt.tryFindMappingOrVariant \ntryFindMappingOrVariant \nMSSqlServerSsdt.ssdtTableToTable \nssdtTableToTable \nMSSqlServerSsdt.ssdtColumnToColumn \nssdtColumnToColumn \nMSSqlServerSsdt.ssdtCache \nssdtCache","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#DACPAC_SEARCH_PATH_ENV_VAR_NAME","title":"MSSqlServerSsdt.DACPAC_SEARCH_PATH_ENV_VAR_NAME","content":"MSSqlServerSsdt.DACPAC_SEARCH_PATH_ENV_VAR_NAME \nDACPAC_SEARCH_PATH_ENV_VAR_NAME \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#findDacPacFile","title":"MSSqlServerSsdt.findDacPacFile","content":"MSSqlServerSsdt.findDacPacFile \nfindDacPacFile \n Tries to find .dacpac file using the given path at design time or by searching the runtime assembly path.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#parseDacpac","title":"MSSqlServerSsdt.parseDacpac","content":"MSSqlServerSsdt.parseDacpac \nparseDacpac \n Tries to parse a schema model from the given .dacpac file path.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#typeMappingsByName","title":"MSSqlServerSsdt.typeMappingsByName","content":"MSSqlServerSsdt.typeMappingsByName \ntypeMappingsByName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#tryFindMapping","title":"MSSqlServerSsdt.tryFindMapping","content":"MSSqlServerSsdt.tryFindMapping \ntryFindMapping \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#tryFindMappingOrVariant","title":"MSSqlServerSsdt.tryFindMappingOrVariant","content":"MSSqlServerSsdt.tryFindMappingOrVariant \ntryFindMappingOrVariant \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#ssdtTableToTable","title":"MSSqlServerSsdt.ssdtTableToTable","content":"MSSqlServerSsdt.ssdtTableToTable \nssdtTableToTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#ssdtColumnToColumn","title":"MSSqlServerSsdt.ssdtColumnToColumn","content":"MSSqlServerSsdt.ssdtColumnToColumn \nssdtColumnToColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#ssdtCache","title":"MSSqlServerSsdt.ssdtCache","content":"MSSqlServerSsdt.ssdtCache \nssdtCache \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html","title":"MySql","content":"MySql \n \nMySql.resolutionPath \nresolutionPath \nMySql.schemas \nschemas \nMySql.referencedAssemblies \nreferencedAssemblies \nMySql.assemblyNames \nassemblyNames \nMySql.assembly \nassembly \nMySql.findType \nfindType \nMySql.connectionType \nconnectionType \nMySql.commandType \ncommandType \nMySql.parameterType \nparameterType \nMySql.enumType \nenumType \nMySql.getSchemaMethod \ngetSchemaMethod \nMySql.getSchema \ngetSchema \nMySql.typeMappings \ntypeMappings \nMySql.findClrType \nfindClrType \nMySql.findDbType \nfindDbType \nMySql.createCommandParameter \ncreateCommandParameter \nMySql.createParam \ncreateParam \nMySql.fieldNotationAlias \nfieldNotationAlias \nMySql.ripQuotes \nripQuotes \nMySql.createTypeMappings \ncreateTypeMappings \nMySql.createConnection \ncreateConnection \nMySql.createCommand \ncreateCommand \nMySql.getSprocReturnCols \ngetSprocReturnCols \nMySql.getSprocName \ngetSprocName \nMySql.getSprocParameters \ngetSprocParameters \nMySql.getSprocs \ngetSprocs \nMySql.readParameter \nreadParameter \nMySql.processReturnColumn \nprocessReturnColumn \nMySql.processReturnColumnAsync \nprocessReturnColumnAsync \nMySql.executeSprocCommandCommon \nexecuteSprocCommandCommon \nMySql.executeSprocCommand \nexecuteSprocCommand \nMySql.executeSprocCommandAsync \nexecuteSprocCommandAsync","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#resolutionPath","title":"MySql.resolutionPath","content":"MySql.resolutionPath \nresolutionPath \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#schemas","title":"MySql.schemas","content":"MySql.schemas \nschemas \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#referencedAssemblies","title":"MySql.referencedAssemblies","content":"MySql.referencedAssemblies \nreferencedAssemblies \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#assemblyNames","title":"MySql.assemblyNames","content":"MySql.assemblyNames \nassemblyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#assembly","title":"MySql.assembly","content":"MySql.assembly \nassembly \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#findType","title":"MySql.findType","content":"MySql.findType \nfindType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#connectionType","title":"MySql.connectionType","content":"MySql.connectionType \nconnectionType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#commandType","title":"MySql.commandType","content":"MySql.commandType \ncommandType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#parameterType","title":"MySql.parameterType","content":"MySql.parameterType \nparameterType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#enumType","title":"MySql.enumType","content":"MySql.enumType \nenumType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#getSchemaMethod","title":"MySql.getSchemaMethod","content":"MySql.getSchemaMethod \ngetSchemaMethod \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#getSchema","title":"MySql.getSchema","content":"MySql.getSchema \ngetSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#typeMappings","title":"MySql.typeMappings","content":"MySql.typeMappings \ntypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#findClrType","title":"MySql.findClrType","content":"MySql.findClrType \nfindClrType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#findDbType","title":"MySql.findDbType","content":"MySql.findDbType \nfindDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#createCommandParameter","title":"MySql.createCommandParameter","content":"MySql.createCommandParameter \ncreateCommandParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#createParam","title":"MySql.createParam","content":"MySql.createParam \ncreateParam \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#fieldNotationAlias","title":"MySql.fieldNotationAlias","content":"MySql.fieldNotationAlias \nfieldNotationAlias \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#ripQuotes","title":"MySql.ripQuotes","content":"MySql.ripQuotes \nripQuotes \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#createTypeMappings","title":"MySql.createTypeMappings","content":"MySql.createTypeMappings \ncreateTypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#createConnection","title":"MySql.createConnection","content":"MySql.createConnection \ncreateConnection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#createCommand","title":"MySql.createCommand","content":"MySql.createCommand \ncreateCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#getSprocReturnCols","title":"MySql.getSprocReturnCols","content":"MySql.getSprocReturnCols \ngetSprocReturnCols \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#getSprocName","title":"MySql.getSprocName","content":"MySql.getSprocName \ngetSprocName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#getSprocParameters","title":"MySql.getSprocParameters","content":"MySql.getSprocParameters \ngetSprocParameters \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#getSprocs","title":"MySql.getSprocs","content":"MySql.getSprocs \ngetSprocs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#readParameter","title":"MySql.readParameter","content":"MySql.readParameter \nreadParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#processReturnColumn","title":"MySql.processReturnColumn","content":"MySql.processReturnColumn \nprocessReturnColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#processReturnColumnAsync","title":"MySql.processReturnColumnAsync","content":"MySql.processReturnColumnAsync \nprocessReturnColumnAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#executeSprocCommandCommon","title":"MySql.executeSprocCommandCommon","content":"MySql.executeSprocCommandCommon \nexecuteSprocCommandCommon \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#executeSprocCommand","title":"MySql.executeSprocCommand","content":"MySql.executeSprocCommand \nexecuteSprocCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#executeSprocCommandAsync","title":"MySql.executeSprocCommandAsync","content":"MySql.executeSprocCommandAsync \nexecuteSprocCommandAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html","title":"PostgreSQL","content":"PostgreSQL \n \nPostgreSQL.resolutionPath \nresolutionPath \nPostgreSQL.schemas \nschemas \nPostgreSQL.referencedAssemblies \nreferencedAssemblies \nPostgreSQL.assemblyNames \nassemblyNames \nPostgreSQL.ANONYMOUS_PARAMETER_NAME \nANONYMOUS_PARAMETER_NAME \nPostgreSQL.assembly \nassembly \nPostgreSQL.isLegacyVersion \nisLegacyVersion \nPostgreSQL.findType \nfindType \nPostgreSQL.getType \ngetType \nPostgreSQL.connectionType \nconnectionType \nPostgreSQL.commandType \ncommandType \nPostgreSQL.parameterType \nparameterType \nPostgreSQL.dbType \ndbType \nPostgreSQL.dbTypeGetter \ndbTypeGetter \nPostgreSQL.dbTypeSetter \ndbTypeSetter \nPostgreSQL.getDbType \ngetDbType \nPostgreSQL.findDbType \nfindDbType \nPostgreSQL.parseDbType \nparseDbType \nPostgreSQL.tryReadValueProperty \ntryReadValueProperty \nPostgreSQL.isOptionValue \nisOptionValue \nPostgreSQL.createCommandParameter \ncreateCommandParameter \nPostgreSQL.fieldNotationAlias \nfieldNotationAlias \nPostgreSQL.arrayProviderDbType \narrayProviderDbType \nPostgreSQL.typemap\u0027 \ntypemap\u0027 \nPostgreSQL.typemap \ntypemap \nPostgreSQL.namemap \nnamemap \nPostgreSQL.createTypeMappings \ncreateTypeMappings \nPostgreSQL.createConnection \ncreateConnection \nPostgreSQL.createCommand \ncreateCommand \nPostgreSQL.readParameter \nreadParameter \nPostgreSQL.executeSprocCommandCommon \nexecuteSprocCommandCommon \nPostgreSQL.executeSprocCommand \nexecuteSprocCommand \nPostgreSQL.executeSprocCommandAsync \nexecuteSprocCommandAsync \nPostgreSQL.getSprocs \ngetSprocs","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#resolutionPath","title":"PostgreSQL.resolutionPath","content":"PostgreSQL.resolutionPath \nresolutionPath \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#schemas","title":"PostgreSQL.schemas","content":"PostgreSQL.schemas \nschemas \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#referencedAssemblies","title":"PostgreSQL.referencedAssemblies","content":"PostgreSQL.referencedAssemblies \nreferencedAssemblies \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#assemblyNames","title":"PostgreSQL.assemblyNames","content":"PostgreSQL.assemblyNames \nassemblyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#ANONYMOUS_PARAMETER_NAME","title":"PostgreSQL.ANONYMOUS_PARAMETER_NAME","content":"PostgreSQL.ANONYMOUS_PARAMETER_NAME \nANONYMOUS_PARAMETER_NAME \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#assembly","title":"PostgreSQL.assembly","content":"PostgreSQL.assembly \nassembly \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#isLegacyVersion","title":"PostgreSQL.isLegacyVersion","content":"PostgreSQL.isLegacyVersion \nisLegacyVersion \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#findType","title":"PostgreSQL.findType","content":"PostgreSQL.findType \nfindType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#getType","title":"PostgreSQL.getType","content":"PostgreSQL.getType \ngetType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#connectionType","title":"PostgreSQL.connectionType","content":"PostgreSQL.connectionType \nconnectionType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#commandType","title":"PostgreSQL.commandType","content":"PostgreSQL.commandType \ncommandType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#parameterType","title":"PostgreSQL.parameterType","content":"PostgreSQL.parameterType \nparameterType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#dbType","title":"PostgreSQL.dbType","content":"PostgreSQL.dbType \ndbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#dbTypeGetter","title":"PostgreSQL.dbTypeGetter","content":"PostgreSQL.dbTypeGetter \ndbTypeGetter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#dbTypeSetter","title":"PostgreSQL.dbTypeSetter","content":"PostgreSQL.dbTypeSetter \ndbTypeSetter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#getDbType","title":"PostgreSQL.getDbType","content":"PostgreSQL.getDbType \ngetDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#findDbType","title":"PostgreSQL.findDbType","content":"PostgreSQL.findDbType \nfindDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#parseDbType","title":"PostgreSQL.parseDbType","content":"PostgreSQL.parseDbType \nparseDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#tryReadValueProperty","title":"PostgreSQL.tryReadValueProperty","content":"PostgreSQL.tryReadValueProperty \ntryReadValueProperty \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#isOptionValue","title":"PostgreSQL.isOptionValue","content":"PostgreSQL.isOptionValue \nisOptionValue \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#createCommandParameter","title":"PostgreSQL.createCommandParameter","content":"PostgreSQL.createCommandParameter \ncreateCommandParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#fieldNotationAlias","title":"PostgreSQL.fieldNotationAlias","content":"PostgreSQL.fieldNotationAlias \nfieldNotationAlias \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#arrayProviderDbType","title":"PostgreSQL.arrayProviderDbType","content":"PostgreSQL.arrayProviderDbType \narrayProviderDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#typemap\u0027","title":"PostgreSQL.typemap\u0027","content":"PostgreSQL.typemap\u0027 \ntypemap\u0027 \n Pairs a CLR type by type object with a value of Npgsql\u0027s type enumeration","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#typemap","title":"PostgreSQL.typemap","content":"PostgreSQL.typemap \ntypemap \n Pairs a CLR type by type parameter with a value of Npgsql\u0027s type enumeration","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#namemap","title":"PostgreSQL.namemap","content":"PostgreSQL.namemap \nnamemap \n Pairs a CLR type by name with a value of Npgsql\u0027s type enumeration","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#createTypeMappings","title":"PostgreSQL.createTypeMappings","content":"PostgreSQL.createTypeMappings \ncreateTypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#createConnection","title":"PostgreSQL.createConnection","content":"PostgreSQL.createConnection \ncreateConnection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#createCommand","title":"PostgreSQL.createCommand","content":"PostgreSQL.createCommand \ncreateCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#readParameter","title":"PostgreSQL.readParameter","content":"PostgreSQL.readParameter \nreadParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#executeSprocCommandCommon","title":"PostgreSQL.executeSprocCommandCommon","content":"PostgreSQL.executeSprocCommandCommon \nexecuteSprocCommandCommon \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#executeSprocCommand","title":"PostgreSQL.executeSprocCommand","content":"PostgreSQL.executeSprocCommand \nexecuteSprocCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#executeSprocCommandAsync","title":"PostgreSQL.executeSprocCommandAsync","content":"PostgreSQL.executeSprocCommandAsync \nexecuteSprocCommandAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#getSprocs","title":"PostgreSQL.getSprocs","content":"PostgreSQL.getSprocs \ngetSprocs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-seq.html","title":"Seq","content":"Seq \n \nSeq.sumQuery \nsumQuery \nSeq.maxQuery \nmaxQuery \nSeq.minQuery \nminQuery \nSeq.averageQuery \naverageQuery \nSeq.stdDevQuery \nstdDevQuery \nSeq.varianceQuery \nvarianceQuery","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-seq.html#sumQuery","title":"Seq.sumQuery","content":"Seq.sumQuery \nsumQuery \n Execute SQLProvider query to get the sum of elements.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-seq.html#maxQuery","title":"Seq.maxQuery","content":"Seq.maxQuery \nmaxQuery \n Execute SQLProvider query to get the max of elements.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-seq.html#minQuery","title":"Seq.minQuery","content":"Seq.minQuery \nminQuery \n Execute SQLProvider query to get the min of elements.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-seq.html#averageQuery","title":"Seq.averageQuery","content":"Seq.averageQuery \naverageQuery \n Execute SQLProvider query to get the avg of elements.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-seq.html#stdDevQuery","title":"Seq.stdDevQuery","content":"Seq.stdDevQuery \nstdDevQuery \n Execute SQLProvider query to get the standard deviation of elements.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-seq.html#varianceQuery","title":"Seq.varianceQuery","content":"Seq.varianceQuery \nvarianceQuery \n Execute SQLProvider query to get the variance of elements.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-casttuplemaker-7.html","title":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E","content":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E \n \nCastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple2 \nmakeTuple2 \nCastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple3 \nmakeTuple3 \nCastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple4 \nmakeTuple4 \nCastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple5 \nmakeTuple5 \nCastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple6 \nmakeTuple6 \nCastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple7 \nmakeTuple7","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-casttuplemaker-7.html#makeTuple2","title":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple2","content":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple2 \nmakeTuple2 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-casttuplemaker-7.html#makeTuple3","title":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple3","content":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple3 \nmakeTuple3 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-casttuplemaker-7.html#makeTuple4","title":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple4","content":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple4 \nmakeTuple4 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-casttuplemaker-7.html#makeTuple5","title":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple5","content":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple5 \nmakeTuple5 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-casttuplemaker-7.html#makeTuple6","title":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple6","content":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple6 \nmakeTuple6 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-casttuplemaker-7.html#makeTuple7","title":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple7","content":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple7 \nmakeTuple7 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-sqldatacontext.html","title":"SqlDataContext","content":"SqlDataContext \n \nSqlDataContext.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-sqldatacontext.html#\u0060\u0060.ctor\u0060\u0060","title":"SqlDataContext.\u0060\u0060.ctor\u0060\u0060","content":"SqlDataContext.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html","title":"Column","content":"Column \n \nColumn.FromQueryParameter \nFromQueryParameter \nColumn.Name \nName \nColumn.TypeMapping \nTypeMapping \nColumn.IsPrimaryKey \nIsPrimaryKey \nColumn.IsNullable \nIsNullable \nColumn.IsAutonumber \nIsAutonumber \nColumn.HasDefault \nHasDefault \nColumn.IsComputed \nIsComputed \nColumn.TypeInfo \nTypeInfo","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#FromQueryParameter","title":"Column.FromQueryParameter","content":"Column.FromQueryParameter \nFromQueryParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#Name","title":"Column.Name","content":"Column.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#TypeMapping","title":"Column.TypeMapping","content":"Column.TypeMapping \nTypeMapping \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#IsPrimaryKey","title":"Column.IsPrimaryKey","content":"Column.IsPrimaryKey \nIsPrimaryKey \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#IsNullable","title":"Column.IsNullable","content":"Column.IsNullable \nIsNullable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#IsAutonumber","title":"Column.IsAutonumber","content":"Column.IsAutonumber \nIsAutonumber \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#HasDefault","title":"Column.HasDefault","content":"Column.HasDefault \nHasDefault \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#IsComputed","title":"Column.IsComputed","content":"Column.IsComputed \nIsComputed \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#TypeInfo","title":"Column.TypeInfo","content":"Column.TypeInfo \nTypeInfo \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-columnlookup.html","title":"ColumnLookup","content":"ColumnLookup \n \nColumnLookup.Values \nValues \nColumnLookup.Item \nItem \nColumnLookup.Keys \nKeys \nColumnLookup.Count \nCount \nColumnLookup.IsEmpty \nIsEmpty","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-columnlookup.html#Values","title":"ColumnLookup.Values","content":"ColumnLookup.Values \nValues \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-columnlookup.html#Item","title":"ColumnLookup.Item","content":"ColumnLookup.Item \nItem \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-columnlookup.html#Keys","title":"ColumnLookup.Keys","content":"ColumnLookup.Keys \nKeys \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-columnlookup.html#Count","title":"ColumnLookup.Count","content":"ColumnLookup.Count \nCount \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-columnlookup.html#IsEmpty","title":"ColumnLookup.IsEmpty","content":"ColumnLookup.IsEmpty \nIsEmpty \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-compiletimepackagedefinition.html","title":"CompileTimePackageDefinition","content":"CompileTimePackageDefinition \n \nCompileTimePackageDefinition.Name \nName \nCompileTimePackageDefinition.Sprocs \nSprocs","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-compiletimepackagedefinition.html#Name","title":"CompileTimePackageDefinition.Name","content":"CompileTimePackageDefinition.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-compiletimepackagedefinition.html#Sprocs","title":"CompileTimePackageDefinition.Sprocs","content":"CompileTimePackageDefinition.Sprocs \nSprocs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-compiletimesprocdefinition.html","title":"CompileTimeSprocDefinition","content":"CompileTimeSprocDefinition \n \nCompileTimeSprocDefinition.Name \nName \nCompileTimeSprocDefinition.Params \nParams \nCompileTimeSprocDefinition.ReturnColumns \nReturnColumns","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-compiletimesprocdefinition.html#Name","title":"CompileTimeSprocDefinition.Name","content":"CompileTimeSprocDefinition.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-compiletimesprocdefinition.html#Params","title":"CompileTimeSprocDefinition.Params","content":"CompileTimeSprocDefinition.Params \nParams \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-compiletimesprocdefinition.html#ReturnColumns","title":"CompileTimeSprocDefinition.ReturnColumns","content":"CompileTimeSprocDefinition.ReturnColumns \nReturnColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-queryparameter.html","title":"QueryParameter","content":"QueryParameter \n \nQueryParameter.Create \nCreate \nQueryParameter.Name \nName \nQueryParameter.TypeMapping \nTypeMapping \nQueryParameter.Direction \nDirection \nQueryParameter.Length \nLength \nQueryParameter.Ordinal \nOrdinal","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-queryparameter.html#Create","title":"QueryParameter.Create","content":"QueryParameter.Create \nCreate \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-queryparameter.html#Name","title":"QueryParameter.Name","content":"QueryParameter.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-queryparameter.html#TypeMapping","title":"QueryParameter.TypeMapping","content":"QueryParameter.TypeMapping \nTypeMapping \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-queryparameter.html#Direction","title":"QueryParameter.Direction","content":"QueryParameter.Direction \nDirection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-queryparameter.html#Length","title":"QueryParameter.Length","content":"QueryParameter.Length \nLength \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-queryparameter.html#Ordinal","title":"QueryParameter.Ordinal","content":"QueryParameter.Ordinal \nOrdinal \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-relationship.html","title":"Relationship","content":"Relationship \n \nRelationship.Name \nName \nRelationship.PrimaryTable \nPrimaryTable \nRelationship.PrimaryKey \nPrimaryKey \nRelationship.ForeignTable \nForeignTable \nRelationship.ForeignKey \nForeignKey","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-relationship.html#Name","title":"Relationship.Name","content":"Relationship.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-relationship.html#PrimaryTable","title":"Relationship.PrimaryTable","content":"Relationship.PrimaryTable \nPrimaryTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-relationship.html#PrimaryKey","title":"Relationship.PrimaryKey","content":"Relationship.PrimaryKey \nPrimaryKey \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-relationship.html#ForeignTable","title":"Relationship.ForeignTable","content":"Relationship.ForeignTable \nForeignTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-relationship.html#ForeignKey","title":"Relationship.ForeignKey","content":"Relationship.ForeignKey \nForeignKey \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-runtimesprocdefinition.html","title":"RunTimeSprocDefinition","content":"RunTimeSprocDefinition \n \nRunTimeSprocDefinition.Name \nName \nRunTimeSprocDefinition.Params \nParams","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-runtimesprocdefinition.html#Name","title":"RunTimeSprocDefinition.Name","content":"RunTimeSprocDefinition.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-runtimesprocdefinition.html#Params","title":"RunTimeSprocDefinition.Params","content":"RunTimeSprocDefinition.Params \nParams \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sproc.html","title":"Sproc","content":"Sproc \n \nSproc.IsRoot \nIsRoot \nSproc.IsSproc \nIsSproc \nSproc.IsPackage \nIsPackage \nSproc.IsEmpty \nIsEmpty \nSproc.GetKnownTypes \nGetKnownTypes \nSproc.Root \nRoot \nSproc.Package \nPackage \nSproc.Sproc \nSproc \nSproc.Empty \nEmpty","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sproc.html#IsRoot","title":"Sproc.IsRoot","content":"Sproc.IsRoot \nIsRoot \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sproc.html#IsSproc","title":"Sproc.IsSproc","content":"Sproc.IsSproc \nIsSproc \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sproc.html#IsPackage","title":"Sproc.IsPackage","content":"Sproc.IsPackage \nIsPackage \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sproc.html#IsEmpty","title":"Sproc.IsEmpty","content":"Sproc.IsEmpty \nIsEmpty \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sproc.html#GetKnownTypes","title":"Sproc.GetKnownTypes","content":"Sproc.GetKnownTypes \nGetKnownTypes \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sproc.html#Root","title":"Sproc.Root","content":"Sproc.Root \nRoot \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sproc.html#Package","title":"Sproc.Package","content":"Sproc.Package \nPackage \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sproc.html#Sproc","title":"Sproc.Sproc","content":"Sproc.Sproc \nSproc \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sproc.html#Empty","title":"Sproc.Empty","content":"Sproc.Empty \nEmpty \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sprocname.html","title":"SprocName","content":"SprocName \n \nSprocName.ToList \nToList \nSprocName.FriendlyName \nFriendlyName \nSprocName.FullName \nFullName \nSprocName.DbName \nDbName \nSprocName.ProcName \nProcName \nSprocName.Owner \nOwner \nSprocName.PackageName \nPackageName","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sprocname.html#ToList","title":"SprocName.ToList","content":"SprocName.ToList \nToList \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sprocname.html#FriendlyName","title":"SprocName.FriendlyName","content":"SprocName.FriendlyName \nFriendlyName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sprocname.html#FullName","title":"SprocName.FullName","content":"SprocName.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sprocname.html#DbName","title":"SprocName.DbName","content":"SprocName.DbName \nDbName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sprocname.html#ProcName","title":"SprocName.ProcName","content":"SprocName.ProcName \nProcName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sprocname.html#Owner","title":"SprocName.Owner","content":"SprocName.Owner \nOwner \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sprocname.html#PackageName","title":"SprocName.PackageName","content":"SprocName.PackageName \nPackageName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html","title":"Table","content":"Table \n \nTable.QuotedFullName \nQuotedFullName \nTable.FullName \nFullName \nTable.CreateFullName \nCreateFullName \nTable.CreateQuotedFullName \nCreateQuotedFullName \nTable.FromFullName \nFromFullName \nTable.Schema \nSchema \nTable.Name \nName \nTable.Type \nType","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html#QuotedFullName","title":"Table.QuotedFullName","content":"Table.QuotedFullName \nQuotedFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html#FullName","title":"Table.FullName","content":"Table.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html#CreateFullName","title":"Table.CreateFullName","content":"Table.CreateFullName \nCreateFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html#CreateQuotedFullName","title":"Table.CreateQuotedFullName","content":"Table.CreateQuotedFullName \nCreateQuotedFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html#FromFullName","title":"Table.FromFullName","content":"Table.FromFullName \nFromFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html#Schema","title":"Table.Schema","content":"Table.Schema \nSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html#Name","title":"Table.Name","content":"Table.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html#Type","title":"Table.Type","content":"Table.Type \nType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-typemapping.html","title":"TypeMapping","content":"TypeMapping \n \nTypeMapping.Create \nCreate \nTypeMapping.ProviderTypeName \nProviderTypeName \nTypeMapping.ClrType \nClrType \nTypeMapping.ProviderType \nProviderType \nTypeMapping.DbType \nDbType","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-typemapping.html#Create","title":"TypeMapping.Create","content":"TypeMapping.Create \nCreate \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-typemapping.html#ProviderTypeName","title":"TypeMapping.ProviderTypeName","content":"TypeMapping.ProviderTypeName \nProviderTypeName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-typemapping.html#ClrType","title":"TypeMapping.ClrType","content":"TypeMapping.ClrType \nClrType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-typemapping.html#ProviderType","title":"TypeMapping.ProviderType","content":"TypeMapping.ProviderType \nProviderType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-typemapping.html#DbType","title":"TypeMapping.DbType","content":"TypeMapping.DbType \nDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser.html","title":"DacpacParser","content":"DacpacParser \n \nDacpacParser.RegexParsers \nRegexParsers \nDacpacParser.CommentAnnotation \nCommentAnnotation \nDacpacParser.ConstraintColumn \nConstraintColumn \nDacpacParser.PrimaryKeyConstraint \nPrimaryKeyConstraint \nDacpacParser.RefTable \nRefTable \nDacpacParser.SsdtColumn \nSsdtColumn \nDacpacParser.SsdtDescriptionItem \nSsdtDescriptionItem \nDacpacParser.SsdtRelationship \nSsdtRelationship \nDacpacParser.SsdtSchema \nSsdtSchema \nDacpacParser.SsdtStoredProc \nSsdtStoredProc \nDacpacParser.SsdtStoredProcParam \nSsdtStoredProcParam \nDacpacParser.SsdtTable \nSsdtTable \nDacpacParser.SsdtUserDefinedDataType \nSsdtUserDefinedDataType \nDacpacParser.SsdtView \nSsdtView \nDacpacParser.SsdtViewColumn \nSsdtViewColumn \nDacpacParser.UDDTInheritedType \nUDDTInheritedType \nDacpacParser.UDDTName \nUDDTName \nDacpacParser.extractModelXml \nextractModelXml \nDacpacParser.toXmlNamespaceDoc \ntoXmlNamespaceDoc \nDacpacParser.attMaybe \nattMaybe \nDacpacParser.att \natt \nDacpacParser.parseXml \nparseXml","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser.html#extractModelXml","title":"DacpacParser.extractModelXml","content":"DacpacParser.extractModelXml \nextractModelXml \n Extracts model.xml from the given .dacpac file path.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser.html#toXmlNamespaceDoc","title":"DacpacParser.toXmlNamespaceDoc","content":"DacpacParser.toXmlNamespaceDoc \ntoXmlNamespaceDoc \n Returns a doc and node/nodes ns helper fns","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser.html#attMaybe","title":"DacpacParser.attMaybe","content":"DacpacParser.attMaybe \nattMaybe \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser.html#att","title":"DacpacParser.att","content":"DacpacParser.att \natt \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser.html#parseXml","title":"DacpacParser.parseXml","content":"DacpacParser.parseXml \nparseXml \n Parses the xml that is extracted from a .dacpac file.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html","title":"RegexParsers","content":"RegexParsers \n \nRegexParsers.tablePattern \ntablePattern \nRegexParsers.colPattern \ncolPattern \nRegexParsers.viewPattern \nviewPattern \nRegexParsers.splitFullName \nsplitFullName \nRegexParsers.parseTableColumnAnnotation \nparseTableColumnAnnotation \nRegexParsers.parseViewAnnotations \nparseViewAnnotations","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html#tablePattern","title":"RegexParsers.tablePattern","content":"RegexParsers.tablePattern \ntablePattern \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html#colPattern","title":"RegexParsers.colPattern","content":"RegexParsers.colPattern \ncolPattern \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html#viewPattern","title":"RegexParsers.viewPattern","content":"RegexParsers.viewPattern \nviewPattern \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html#splitFullName","title":"RegexParsers.splitFullName","content":"RegexParsers.splitFullName \nsplitFullName \n Splits a fully qualified name into parts. \n Name can start with a letter, _, @ or #. Names in square brackets can contain any char except for square brackets.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html#parseTableColumnAnnotation","title":"RegexParsers.parseTableColumnAnnotation","content":"RegexParsers.parseTableColumnAnnotation \nparseTableColumnAnnotation \n Tries to find an in-line commented type annotation in a computed table column.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html#parseViewAnnotations","title":"RegexParsers.parseViewAnnotations","content":"RegexParsers.parseViewAnnotations \nparseViewAnnotations \n Tries to find in-line commented type annotations in a view declaration.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-commentannotation.html","title":"CommentAnnotation","content":"CommentAnnotation \n \nCommentAnnotation.Column \nColumn \nCommentAnnotation.DataType \nDataType \nCommentAnnotation.Nullability \nNullability","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-commentannotation.html#Column","title":"CommentAnnotation.Column","content":"CommentAnnotation.Column \nColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-commentannotation.html#DataType","title":"CommentAnnotation.DataType","content":"CommentAnnotation.DataType \nDataType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-commentannotation.html#Nullability","title":"CommentAnnotation.Nullability","content":"CommentAnnotation.Nullability \nNullability \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-constraintcolumn.html","title":"ConstraintColumn","content":"ConstraintColumn \n \nConstraintColumn.FullName \nFullName \nConstraintColumn.Name \nName","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-constraintcolumn.html#FullName","title":"ConstraintColumn.FullName","content":"ConstraintColumn.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-constraintcolumn.html#Name","title":"ConstraintColumn.Name","content":"ConstraintColumn.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-primarykeyconstraint.html","title":"PrimaryKeyConstraint","content":"PrimaryKeyConstraint \n \nPrimaryKeyConstraint.Name \nName \nPrimaryKeyConstraint.Columns \nColumns","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-primarykeyconstraint.html#Name","title":"PrimaryKeyConstraint.Name","content":"PrimaryKeyConstraint.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-primarykeyconstraint.html#Columns","title":"PrimaryKeyConstraint.Columns","content":"PrimaryKeyConstraint.Columns \nColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-reftable.html","title":"RefTable","content":"RefTable \n \nRefTable.FullName \nFullName \nRefTable.Schema \nSchema \nRefTable.Name \nName \nRefTable.Columns \nColumns","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-reftable.html#FullName","title":"RefTable.FullName","content":"RefTable.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-reftable.html#Schema","title":"RefTable.Schema","content":"RefTable.Schema \nSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-reftable.html#Name","title":"RefTable.Name","content":"RefTable.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-reftable.html#Columns","title":"RefTable.Columns","content":"RefTable.Columns \nColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html","title":"SsdtColumn","content":"SsdtColumn \n \nSsdtColumn.FullName \nFullName \nSsdtColumn.Name \nName \nSsdtColumn.Description \nDescription \nSsdtColumn.DataType \nDataType \nSsdtColumn.AllowNulls \nAllowNulls \nSsdtColumn.IsIdentity \nIsIdentity \nSsdtColumn.HasDefault \nHasDefault \nSsdtColumn.ComputedColumn \nComputedColumn","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html#FullName","title":"SsdtColumn.FullName","content":"SsdtColumn.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html#Name","title":"SsdtColumn.Name","content":"SsdtColumn.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html#Description","title":"SsdtColumn.Description","content":"SsdtColumn.Description \nDescription \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html#DataType","title":"SsdtColumn.DataType","content":"SsdtColumn.DataType \nDataType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html#AllowNulls","title":"SsdtColumn.AllowNulls","content":"SsdtColumn.AllowNulls \nAllowNulls \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html#IsIdentity","title":"SsdtColumn.IsIdentity","content":"SsdtColumn.IsIdentity \nIsIdentity \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html#HasDefault","title":"SsdtColumn.HasDefault","content":"SsdtColumn.HasDefault \nHasDefault \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html#ComputedColumn","title":"SsdtColumn.ComputedColumn","content":"SsdtColumn.ComputedColumn \nComputedColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtdescriptionitem.html","title":"SsdtDescriptionItem","content":"SsdtDescriptionItem \n \nSsdtDescriptionItem.DecriptionType \nDecriptionType \nSsdtDescriptionItem.Schema \nSchema \nSsdtDescriptionItem.TableName \nTableName \nSsdtDescriptionItem.ColumnName \nColumnName \nSsdtDescriptionItem.Description \nDescription","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtdescriptionitem.html#DecriptionType","title":"SsdtDescriptionItem.DecriptionType","content":"SsdtDescriptionItem.DecriptionType \nDecriptionType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtdescriptionitem.html#Schema","title":"SsdtDescriptionItem.Schema","content":"SsdtDescriptionItem.Schema \nSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtdescriptionitem.html#TableName","title":"SsdtDescriptionItem.TableName","content":"SsdtDescriptionItem.TableName \nTableName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtdescriptionitem.html#ColumnName","title":"SsdtDescriptionItem.ColumnName","content":"SsdtDescriptionItem.ColumnName \nColumnName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtdescriptionitem.html#Description","title":"SsdtDescriptionItem.Description","content":"SsdtDescriptionItem.Description \nDescription \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtrelationship.html","title":"SsdtRelationship","content":"SsdtRelationship \n \nSsdtRelationship.Name \nName \nSsdtRelationship.DefiningTable \nDefiningTable \nSsdtRelationship.ForeignTable \nForeignTable","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtrelationship.html#Name","title":"SsdtRelationship.Name","content":"SsdtRelationship.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtrelationship.html#DefiningTable","title":"SsdtRelationship.DefiningTable","content":"SsdtRelationship.DefiningTable \nDefiningTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtrelationship.html#ForeignTable","title":"SsdtRelationship.ForeignTable","content":"SsdtRelationship.ForeignTable \nForeignTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html","title":"SsdtSchema","content":"SsdtSchema \n \nSsdtSchema.Tables \nTables \nSsdtSchema.TryGetTableByName \nTryGetTableByName \nSsdtSchema.StoredProcs \nStoredProcs \nSsdtSchema.Relationships \nRelationships \nSsdtSchema.Descriptions \nDescriptions \nSsdtSchema.UserDefinedDataTypes \nUserDefinedDataTypes","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html#Tables","title":"SsdtSchema.Tables","content":"SsdtSchema.Tables \nTables \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html#TryGetTableByName","title":"SsdtSchema.TryGetTableByName","content":"SsdtSchema.TryGetTableByName \nTryGetTableByName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html#StoredProcs","title":"SsdtSchema.StoredProcs","content":"SsdtSchema.StoredProcs \nStoredProcs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html#Relationships","title":"SsdtSchema.Relationships","content":"SsdtSchema.Relationships \nRelationships \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html#Descriptions","title":"SsdtSchema.Descriptions","content":"SsdtSchema.Descriptions \nDescriptions \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html#UserDefinedDataTypes","title":"SsdtSchema.UserDefinedDataTypes","content":"SsdtSchema.UserDefinedDataTypes \nUserDefinedDataTypes \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredproc.html","title":"SsdtStoredProc","content":"SsdtStoredProc \n \nSsdtStoredProc.FullName \nFullName \nSsdtStoredProc.Schema \nSchema \nSsdtStoredProc.Name \nName \nSsdtStoredProc.Parameters \nParameters","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredproc.html#FullName","title":"SsdtStoredProc.FullName","content":"SsdtStoredProc.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredproc.html#Schema","title":"SsdtStoredProc.Schema","content":"SsdtStoredProc.Schema \nSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredproc.html#Name","title":"SsdtStoredProc.Name","content":"SsdtStoredProc.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredproc.html#Parameters","title":"SsdtStoredProc.Parameters","content":"SsdtStoredProc.Parameters \nParameters \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredprocparam.html","title":"SsdtStoredProcParam","content":"SsdtStoredProcParam \n \nSsdtStoredProcParam.FullName \nFullName \nSsdtStoredProcParam.Name \nName \nSsdtStoredProcParam.DataType \nDataType \nSsdtStoredProcParam.Length \nLength \nSsdtStoredProcParam.IsOutput \nIsOutput","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredprocparam.html#FullName","title":"SsdtStoredProcParam.FullName","content":"SsdtStoredProcParam.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredprocparam.html#Name","title":"SsdtStoredProcParam.Name","content":"SsdtStoredProcParam.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredprocparam.html#DataType","title":"SsdtStoredProcParam.DataType","content":"SsdtStoredProcParam.DataType \nDataType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredprocparam.html#Length","title":"SsdtStoredProcParam.Length","content":"SsdtStoredProcParam.Length \nLength \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredprocparam.html#IsOutput","title":"SsdtStoredProcParam.IsOutput","content":"SsdtStoredProcParam.IsOutput \nIsOutput \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html","title":"SsdtTable","content":"SsdtTable \n \nSsdtTable.FullName \nFullName \nSsdtTable.Schema \nSchema \nSsdtTable.Name \nName \nSsdtTable.Columns \nColumns \nSsdtTable.PrimaryKey \nPrimaryKey \nSsdtTable.IsView \nIsView","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html#FullName","title":"SsdtTable.FullName","content":"SsdtTable.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html#Schema","title":"SsdtTable.Schema","content":"SsdtTable.Schema \nSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html#Name","title":"SsdtTable.Name","content":"SsdtTable.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html#Columns","title":"SsdtTable.Columns","content":"SsdtTable.Columns \nColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html#PrimaryKey","title":"SsdtTable.PrimaryKey","content":"SsdtTable.PrimaryKey \nPrimaryKey \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html#IsView","title":"SsdtTable.IsView","content":"SsdtTable.IsView \nIsView \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtuserdefineddatatype.html","title":"SsdtUserDefinedDataType","content":"SsdtUserDefinedDataType \n \nSsdtUserDefinedDataType.Values \nValues \nSsdtUserDefinedDataType.Item \nItem \nSsdtUserDefinedDataType.Keys \nKeys \nSsdtUserDefinedDataType.Count \nCount \nSsdtUserDefinedDataType.IsEmpty \nIsEmpty","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtuserdefineddatatype.html#Values","title":"SsdtUserDefinedDataType.Values","content":"SsdtUserDefinedDataType.Values \nValues \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtuserdefineddatatype.html#Item","title":"SsdtUserDefinedDataType.Item","content":"SsdtUserDefinedDataType.Item \nItem \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtuserdefineddatatype.html#Keys","title":"SsdtUserDefinedDataType.Keys","content":"SsdtUserDefinedDataType.Keys \nKeys \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtuserdefineddatatype.html#Count","title":"SsdtUserDefinedDataType.Count","content":"SsdtUserDefinedDataType.Count \nCount \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtuserdefineddatatype.html#IsEmpty","title":"SsdtUserDefinedDataType.IsEmpty","content":"SsdtUserDefinedDataType.IsEmpty \nIsEmpty \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html","title":"SsdtView","content":"SsdtView \n \nSsdtView.FullName \nFullName \nSsdtView.Schema \nSchema \nSsdtView.Name \nName \nSsdtView.Columns \nColumns \nSsdtView.DynamicColumns \nDynamicColumns \nSsdtView.Annotations \nAnnotations","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html#FullName","title":"SsdtView.FullName","content":"SsdtView.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html#Schema","title":"SsdtView.Schema","content":"SsdtView.Schema \nSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html#Name","title":"SsdtView.Name","content":"SsdtView.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html#Columns","title":"SsdtView.Columns","content":"SsdtView.Columns \nColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html#DynamicColumns","title":"SsdtView.DynamicColumns","content":"SsdtView.DynamicColumns \nDynamicColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html#Annotations","title":"SsdtView.Annotations","content":"SsdtView.Annotations \nAnnotations \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtviewcolumn.html","title":"SsdtViewColumn","content":"SsdtViewColumn \n \nSsdtViewColumn.FullName \nFullName \nSsdtViewColumn.ColumnRefPath \nColumnRefPath","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtviewcolumn.html#FullName","title":"SsdtViewColumn.FullName","content":"SsdtViewColumn.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtviewcolumn.html#ColumnRefPath","title":"SsdtViewColumn.ColumnRefPath","content":"SsdtViewColumn.ColumnRefPath \nColumnRefPath \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-uddtinheritedtype.html","title":"UDDTInheritedType","content":"UDDTInheritedType \n \nUDDTInheritedType.UDDTInheritedType \nUDDTInheritedType","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-uddtinheritedtype.html#UDDTInheritedType","title":"UDDTInheritedType.UDDTInheritedType","content":"UDDTInheritedType.UDDTInheritedType \nUDDTInheritedType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-uddtname.html","title":"UDDTName","content":"UDDTName \n \nUDDTName.UDDTName \nUDDTName","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-uddtname.html#UDDTName","title":"UDDTName.UDDTName","content":"UDDTName.UDDTName \nUDDTName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html","title":"IsolationLevel","content":"IsolationLevel \n Corresponds to the System.Transactions.IsolationLevel. \nIsolationLevel.Serializable \nSerializable \nIsolationLevel.RepeatableRead \nRepeatableRead \nIsolationLevel.ReadCommitted \nReadCommitted \nIsolationLevel.ReadUncommitted \nReadUncommitted \nIsolationLevel.Snapshot \nSnapshot \nIsolationLevel.Chaos \nChaos \nIsolationLevel.Unspecified \nUnspecified \nIsolationLevel.DontCreateTransaction \nDontCreateTransaction","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html#Serializable","title":"IsolationLevel.Serializable","content":"IsolationLevel.Serializable \nSerializable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html#RepeatableRead","title":"IsolationLevel.RepeatableRead","content":"IsolationLevel.RepeatableRead \nRepeatableRead \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html#ReadCommitted","title":"IsolationLevel.ReadCommitted","content":"IsolationLevel.ReadCommitted \nReadCommitted \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html#ReadUncommitted","title":"IsolationLevel.ReadUncommitted","content":"IsolationLevel.ReadUncommitted \nReadUncommitted \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html#Snapshot","title":"IsolationLevel.Snapshot","content":"IsolationLevel.Snapshot \nSnapshot \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html#Chaos","title":"IsolationLevel.Chaos","content":"IsolationLevel.Chaos \nChaos \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html#Unspecified","title":"IsolationLevel.Unspecified","content":"IsolationLevel.Unspecified \nUnspecified \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html#DontCreateTransaction","title":"IsolationLevel.DontCreateTransaction","content":"IsolationLevel.DontCreateTransaction \nDontCreateTransaction \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-transactionoptions.html","title":"TransactionOptions","content":"TransactionOptions \n Corresponds to the System.Transactions.TransactionOptions. \nTransactionOptions.Default \nDefault \nTransactionOptions.Timeout \nTimeout \nTransactionOptions.IsolationLevel \nIsolationLevel","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-transactionoptions.html#Default","title":"TransactionOptions.Default","content":"TransactionOptions.Default \nDefault \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-transactionoptions.html#Timeout","title":"TransactionOptions.Timeout","content":"TransactionOptions.Timeout \nTimeout \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-transactionoptions.html#IsolationLevel","title":"TransactionOptions.IsolationLevel","content":"TransactionOptions.IsolationLevel \nIsolationLevel \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/global-expressionoptimizer.html","title":"ExpressionOptimizer","content":"ExpressionOptimizer \n This is just a light-weight expression optimizer.\n It won\u0027t do any heavy stuff... \nExpressionOptimizer.Methods \nMethods \nExpressionOptimizer.reductionMethods \nreductionMethods \nExpressionOptimizer.doReduction \ndoReduction \nExpressionOptimizer.visit \nvisit \nExpressionOptimizer.tryVisit \ntryVisit \nExpressionOptimizer.visitTyped \nvisitTyped \nExpressionOptimizer.tryVisitTyped \ntryVisitTyped","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/global-expressionoptimizer.html#reductionMethods","title":"ExpressionOptimizer.reductionMethods","content":"ExpressionOptimizer.reductionMethods \nreductionMethods \n Used optimization methods","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/global-expressionoptimizer.html#doReduction","title":"ExpressionOptimizer.doReduction","content":"ExpressionOptimizer.doReduction \ndoReduction \n Does reductions just for a current node.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/global-expressionoptimizer.html#visit","title":"ExpressionOptimizer.visit","content":"ExpressionOptimizer.visit \nvisit \n Expression tree visitor: go through the whole expression tree.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/global-expressionoptimizer.html#tryVisit","title":"ExpressionOptimizer.tryVisit","content":"ExpressionOptimizer.tryVisit \ntryVisit \n Expression tree visitor: go through the whole expression tree.\n Catches the exceptions.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/global-expressionoptimizer.html#visitTyped","title":"ExpressionOptimizer.visitTyped","content":"ExpressionOptimizer.visitTyped \nvisitTyped \n Expression tree visitor: go through the whole expression tree.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/global-expressionoptimizer.html#tryVisitTyped","title":"ExpressionOptimizer.tryVisitTyped","content":"ExpressionOptimizer.tryVisitTyped \ntryVisitTyped \n Expression tree visitor: go through the whole expression tree.\n Catches the exceptions.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html","title":"Methods","content":"Methods \n \nMethods.\u0060\u0060replace constant comparison\u0060\u0060 \n\u0060\u0060replace constant comparison\u0060\u0060 \nMethods.\u0060\u0060remove AnonymousType\u0060\u0060 \n\u0060\u0060remove AnonymousType\u0060\u0060 \nMethods.\u0060\u0060cut not used condition\u0060\u0060 \n\u0060\u0060cut not used condition\u0060\u0060 \nMethods.\u0060\u0060not false is true\u0060\u0060 \n\u0060\u0060not false is true\u0060\u0060 \nMethods.associate \nassociate \nMethods.commute \ncommute \nMethods.distribute \ndistribute \nMethods.gather \ngather \nMethods.identity \nidentity \nMethods.annihilate \nannihilate \nMethods.absorb \nabsorb \nMethods.idempotence \nidempotence \nMethods.complement \ncomplement \nMethods.doubleNegation \ndoubleNegation \nMethods.deMorgan \ndeMorgan \nMethods.balancetree \nbalancetree \nMethods.\u0060\u0060evaluate constants\u0060\u0060 \n\u0060\u0060evaluate constants\u0060\u0060 \nMethods.\u0060\u0060evaluate basic constant math\u0060\u0060 \n\u0060\u0060evaluate basic constant math\u0060\u0060","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#\u0060\u0060replace constant comparison\u0060\u0060","title":"Methods.\u0060\u0060replace constant comparison\u0060\u0060","content":"Methods.\u0060\u0060replace constant comparison\u0060\u0060 \n\u0060\u0060replace constant comparison\u0060\u0060 \n\u003Cpre\u003E Purpose of this is optimize away already known constant=constant style expressions.\n 7 \u003E 8 --\u003E False\n \u0022G\u0022 = \u0022G\u0022 --\u003E True\u003C/pre\u003E","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#\u0060\u0060remove AnonymousType\u0060\u0060","title":"Methods.\u0060\u0060remove AnonymousType\u0060\u0060","content":"Methods.\u0060\u0060remove AnonymousType\u0060\u0060 \n\u0060\u0060remove AnonymousType\u0060\u0060 \n Purpose of this is to replace non-used anonymous types:\n new AnonymousObject(Item1 = x, Item2 = \u0022\u0022).Item1 --\u003E x","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#\u0060\u0060cut not used condition\u0060\u0060","title":"Methods.\u0060\u0060cut not used condition\u0060\u0060","content":"Methods.\u0060\u0060cut not used condition\u0060\u0060 \n\u0060\u0060cut not used condition\u0060\u0060 \n if false then x else y -\u003E y ","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#\u0060\u0060not false is true\u0060\u0060","title":"Methods.\u0060\u0060not false is true\u0060\u0060","content":"Methods.\u0060\u0060not false is true\u0060\u0060 \n\u0060\u0060not false is true\u0060\u0060 \n not(false) -\u003E true ","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#associate","title":"Methods.associate","content":"Methods.associate \nassociate \n Not in use, would cause looping...","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#commute","title":"Methods.commute","content":"Methods.commute \ncommute \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#distribute","title":"Methods.distribute","content":"Methods.distribute \ndistribute \n Not in use, would cause looping...","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#gather","title":"Methods.gather","content":"Methods.gather \ngather \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#identity","title":"Methods.identity","content":"Methods.identity \nidentity \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#annihilate","title":"Methods.annihilate","content":"Methods.annihilate \nannihilate \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#absorb","title":"Methods.absorb","content":"Methods.absorb \nabsorb \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#idempotence","title":"Methods.idempotence","content":"Methods.idempotence \nidempotence \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#complement","title":"Methods.complement","content":"Methods.complement \ncomplement \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#doubleNegation","title":"Methods.doubleNegation","content":"Methods.doubleNegation \ndoubleNegation \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#deMorgan","title":"Methods.deMorgan","content":"Methods.deMorgan \ndeMorgan \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#balancetree","title":"Methods.balancetree","content":"Methods.balancetree \nbalancetree \n Balance tree that is too much weighted to other side.\n The real advantage is not-so-nested-stack","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#\u0060\u0060evaluate constants\u0060\u0060","title":"Methods.\u0060\u0060evaluate constants\u0060\u0060","content":"Methods.\u0060\u0060evaluate constants\u0060\u0060 \n\u0060\u0060evaluate constants\u0060\u0060 \n Evaluating constants to not mess with our expressions:","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#\u0060\u0060evaluate basic constant math\u0060\u0060","title":"Methods.\u0060\u0060evaluate basic constant math\u0060\u0060","content":"Methods.\u0060\u0060evaluate basic constant math\u0060\u0060 \n\u0060\u0060evaluate basic constant math\u0060\u0060 \n\u003Cpre\u003E Evaluate simple math between two constants.\n 9 * 3 --\u003E 27\n \u0022G\u0022 \u002B \u0022G\u0022 --\u003E \u0022GG\u0022\u003C/pre\u003E","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/index.html","title":"SQLProvider\r\n","content":"SQLProvider\r\nA general .NET/Mono SQL database type provider. Current features:\r\n\r\nLINQ queries\r\nLazy schema exploration\r\nAutomatic constraint navigation\r\nIndividuals\r\nTransactional CRUD operations with identity support\r\nStored Procedures\r\nFunctions\r\nPackages (Oracle)\r\nComposable Query integration\r\nOptional option types\r\nMapping to record types\r\nCustom Operators\r\nSupports Asynchronous Operations\r\nSupports .NET Standard / .NET Core\r\nSupports saving DB schema offline, and SQL-Server *.dacpac files\r\n\r\nThe provider currently has explicit implementations for the following database vendors:\r\n\r\nSQL Server\r\nSQL Server SSDT\r\nSQLite\r\nPostgreSQL\r\nOracle\r\nMySQL\r\nMsAccess\r\nFirebird\r\nDuckDB\r\n\r\nThere is also an ODBC provider that will let you connect to any ODBC source with limited features.\r\nAll database vendors except SQL Server and MS Access will require 3rd party ADO.NET connector objects to function. These are dynamically loaded at runtime so that the SQL provider project is not dependent on them. You must supply the location of the assemblies with the \u0022ResolutionPath\u0022 static parameter.\r\nSQLite is based on the .NET drivers found here. You will need the correct version for your specific architecture and setup.\r\nPostgreSQL is based on the Npgsql .NET drivers found here. The type provider will make frequent calls to the database. Npgsql provides a set of performance related connection strings parameters for tweaking its performance\r\nMySQL is based on the .NET drivers found here. You will need the correct version for your specific architecture and setup. You also need to specify ResolutionPath, which points to the folder containing the dll files for the MySQL driver.\r\nOracle is based on the current release (12.1.0.1.2) of the managed ODP.NET driver found here. However, although the managed version is recommended, it should also work with previous versions of the native driver.\r\nSQL Server SSDT is based on the current release (160.20216.14) found here.\r\n\r\n \r\n \r\n \r\n The library can be installed from NuGet:\r\n PM\u003E Install-Package SQLProvider\r\n \r\n \r\n \r\n\r\nExample\r\n\r\nThis example demonstrates the use of the SQL type provider:\r\n// reference the type provider dll\r\n\r\n#r \u0026quot;../../bin/netstandard2.0/FSharp.Data.SqlProvider.dll\u0026quot;\r\n\r\nopen FSharp.Data.Sql\r\n\r\nlet [\u0026lt;Literal\u0026gt;] resolutionPath = __SOURCE_DIRECTORY__ \u002B @\u0026quot;/../files/sqlite\u0026quot; \r\nlet [\u0026lt;Literal\u0026gt;] connectionString = \u0026quot;Data Source=\u0026quot; \u002B __SOURCE_DIRECTORY__ \u002B @\u0026quot;\\northwindEF.db;Version=3;Read Only=false;FailIfMissing=True;\u0026quot;\r\n// create a type alias with the connection string and database vendor settings\r\ntype sql = SqlDataProvider\u0026lt; \r\n ConnectionString = connectionString,\r\n DatabaseVendor = Common.DatabaseProviderTypes.SQLITE,\r\n SQLiteLibrary=Common.SQLiteLibrary.SystemDataSQLite,\r\n ResolutionPath = resolutionPath,\r\n IndividualsAmount = 1000,\r\n UseOptionTypes = Common.NullableColumnType.OPTION\r\n \u0026gt;\r\nlet ctx = sql.GetDataContext()\r\n\r\n// To use dynamic runtime connectionString, you could use:\r\n// let ctx = sql.GetDataContext connectionString2\r\n\r\n// pick individual entities from the database \r\nlet christina = ctx.Main.Customers.Individuals.\u0060\u0060As ContactName\u0060\u0060.\u0060\u0060BERGS, Christina Berglund\u0060\u0060\r\n\r\n// directly enumerate an entity\u0026#39;s relationships, \r\n// this creates and triggers the relevant query in the background\r\nlet christinasOrders = christina.\u0060\u0060main.Orders by CustomerID\u0060\u0060 |\u0026gt; Seq.toArray\r\n\r\nlet mattisOrderDetails =\r\n query { for c in ctx.Main.Customers do\r\n // you can directly enumerate relationships with no join information\r\n for o in c.\u0060\u0060main.Orders by CustomerID\u0060\u0060 do\r\n // or you can explicitly join on the fields you choose\r\n join od in ctx.Main.OrderDetails on (o.OrderId = od.OrderId)\r\n // the (!!) operator will perform an outer join on a relationship\r\n for prod in (!!) od.\u0060\u0060main.Products by ProductID\u0060\u0060 do \r\n // nullable columns can be represented as option types; the following generates IS NOT NULL\r\n where o.ShipCountry.IsSome \r\n // standard operators will work as expected; the following shows the like operator and IN operator\r\n where (c.ContactName =% (\u0026quot;Matti%\u0026quot;) \u0026amp;\u0026amp; c.CompanyName |=| [|\u0026quot;Squirrelcomapny\u0026quot;;\u0026quot;DaveCompant\u0026quot;|] )\r\n sortBy o.ShipName\r\n // arbitrarily complex projections are supported\r\n select (c.ContactName,o.ShipAddress,o.ShipCountry,prod.ProductName,prod.UnitPrice) } \r\n |\u0026gt; Seq.toArray\r\n\r\nSamples \u0026amp; documentation\r\nThe library comes with comprehensive documentation.\r\n\r\nGeneral a high level view on the type providers\u0027 abilities and limitations\r\nStatic Parameters available static parameters\r\nQuerying information on supported LINQ keywords and custom operators with examples\r\nRelationships how to use automatic constraint navigation in your queries\r\nCRUD usage and limitations of transactional create - update - delete support\r\nProgrammability usage and limitations of stored procedures and functions\r\nIndividuals usage and limitations of this unique feature\r\nComposable Query information on integrating this project with the SQL provider\r\nMapping to record types\r\nUnit-testing your SQL-query logics without a database.\r\n\r\nAPI Reference contains automatically generated documentation for all types, modules\r\nand functions in the library.\r\n\r\n\r\nDatabase vendor specific issues and considerations are documented on their separate pages. Please see the menu on the right.\r\nContributing and copyright\r\nThe project is hosted on GitHub where you can report issues, fork\r\nthe project and submit pull requests. If you\u0027re adding new public API, please also\r\nconsider adding samples that can be turned into a documentation. You might\r\nalso want to read library design notes to understand how it works.\r\nOur tests have more samples. Learn more tech tech details.\r\nThe library is available under Public Domain license, which allows modification and\r\nredistribution for both commercial and non-commercial purposes. For more information see the\r\nLicense file in the GitHub repository.\r\n","headings":["SQLProvider","Example","Samples \u0026amp; documentation","Contributing and copyright"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/async.html","title":"Asynchronous Database Operation\r\n","content":"Asynchronous Database Operation\r\nYou get more performance by concurrency. The idea of async database operations\r\nis to release the business logics thread while the database is doing its job.\r\nThis can lead to a huge performance difference in a heavy traffic environment\r\n(basically, will your business logics server / web-server crash or not).\r\n\r\nIn the picture, we talk about the red block, which can be released to serve other customers.\r\nAs usual with async operations, there will be more thread context switching,\r\nwhich may cause minor performance delays, but concurrency benefits should outweigh the\r\ncons of context switching.\r\nThis is the theory. In practice, SQLProvider is calling the implementation of async methods from\r\nabstract classes under System.Data.Common. The implementation quality of your database\r\nconnection .NET drivers will determine whether or not async is good for you. (E.g. The current\r\nsituation is that MS-SQL-server handles async well, and MySQL does not so.)\r\nCurrently, SQLProvider supports async operations on runtime, not design-time.\r\nYour execution thread may change. For transactions to support this,\r\n.NET 4.5.1 has a fix for asynchronous transactions that must be explicitly used.\r\nAsync queries and updates\r\nThe concept for async queries is this:\r\nopen System\r\nopen System.Threading.Tasks\r\nopen FSharp.Data.Sql\r\n\r\ntype MyWebServer() = \r\n member __.\u0060\u0060Execute Business Logics\u0060\u0060 (id : Guid) : Task\u0026lt;_\u0026gt; = \r\n async {\r\n use transaction = \r\n new System.Transactions.TransactionScope(\r\n // .NET 4.5.1 fix for asynchronous transactions:\r\n System.Transactions.TransactionScopeAsyncFlowOption.Enabled\r\n )\r\n let context = TypeProviderConnection.GetDataContext cstr\r\n let! fetched =\r\n query {\r\n for t2 in context.MyDataBase.MyTable2 do\r\n join t1 in context.MyDataBase.MyTable1 on (t2.ForeignId = t1.Id)\r\n where (t2.Id = id)\r\n select (t1)\r\n } |\u0026gt; Seq.executeQueryAsync\r\n\r\n fetched |\u0026gt; Seq.iter (fun entity -\u0026gt;\r\n entity.SetColumn(\u0026quot;Updated\u0026quot;, DateTime.UtcNow |\u0026gt; box)\r\n )\r\n do! context.SubmitUpdatesAsync()\r\n\r\n transaction.Complete()\r\n return \u0026quot;done!\u0026quot;\r\n } |\u0026gt; Async.StartAsTask\r\n\r\nThe functions to work with asynchrony are:\r\n\r\nArray.executeQueryAsync : IQueryable -\u0026gt; Async []\u0026gt;\r\nList.executeQueryAsync : IQueryable -\u0026gt; Async\r\nSeq.executeQueryAsync : IQueryable -\u0026gt; Async\u0026gt;\r\nSeq.lengthAsync : IQueryable -\u0026gt; Async\r\nSeq.headAsync : IQueryable -\u0026gt; Async\r\nSeq.tryHeadAsync : IQueryable -\u0026gt; Async\r\nand for your data context: SubmitUpdatesAsync : unit -\u0026gt; Async\r\nSeq.sumAsync : IQueryable -\u0026gt; Async\r\nSeq.minAsync : IQueryable -\u0026gt; Async\r\nSeq.maxAsync : IQueryable -\u0026gt; Async\r\nSeq.averageAsync : IQueryable -\u0026gt; Async\r\nSeq.stdDevAsync : IQueryable -\u0026gt; Async\r\nSeq.varianceAsync : IQueryable -\u0026gt; Async\r\n\r\nSeq is .NET IEnumerable, which is lazy. So be careful if using Seq.executeQueryAsync\r\nto not execute your queries several times.\r\nAlso, stored procedures do support InvokeAsync.\r\nDatabase asynchrony can\u0027t be used as a way to do parallelism inside one context.\r\nUsually, database operations can\u0027t be executed in parallel inside one context/transaction.\r\nThat is an anti-pattern in general: the network lag between the database and your logics server\r\nis probably the bottleneck of your system. So, in this order:\r\n\r\nTry to execute your business logics as database queries, as one big query.\r\nOr sometimes, not often, load eagerly data with a single query and process it in the logics server.\r\nAvoid cases in which you create as many queries as your collection has items.\r\n\r\nSo if you are still in the worst case, 3, and have to deal with a List\u0026gt;, you cannot\r\nsay Async.Parallel as that may corrupt your data. To avoid custom imperative while-loops,\r\nwe have provided a little helper function for you, that is List.evaluateOneByOne.\r\nAvoid network traffic between business logics (BL) and database (DB).\r\nWhen you exit the query-computation, you cause the traffic.\r\nWhy Not to Use Async\r\nAs with all the technical choices, there are drawbacks to consider.\r\n\r\nYour codebase will be more complex. This will slow down your development speed if your developers are not F#-professionals.\r\nYou must use other technologies supporting async or .NET tasks, like WCF or SignalR. There is no point in doing async and then still using RunSynchronously at the end.\r\nYou may consider async as premature optimization. Starting without async and converting all later is an option, although your APIs must change.\r\nAsync and transactions are a problem with the Mono environment.\r\nAsync will make your error stacktraces harder to read: You may be used to search your functions from the stacktrace to spot any problems. With async, you don\u0027t have your own code in the error-stack. At the time of e.g. SQL-exception, there is no thread waiting, your code is not actively running, there is no stack.\r\n\r\n","headings":["Asynchronous Database Operation","Async queries and updates","Database asynchrony can\u0027t be used as a way to do parallelism inside one context.","Why Not to Use Async"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/composable.html","title":"Composable Queries\r\n","content":"Composable Queries\r\nDefinition of Composable Queries\r\nComposable methods are those you can chain to build the desired functionality out of smaller parts.\r\nBy passing functions as parameters, you can generate higher-order query operations.\r\nTherefore, a composable query means you can do logics to compose just one database-SQL-query from multiple queryables.\r\nBy using composable queries you can shorten the Database transactions and keep the connection open a minimum of time.\r\nOne common anti-pattern is a trial to solve all the problems in the world by a single code.\r\nSo when you use this kind of feature to achieve \u0022common logics\u0022, keep the software\u0027s maintainability in mind.\r\nOne solution is to add a database view and query that from SQLProvider.\r\nGenerate composable queries by using Linq IQueryable\r\nWith composable queries, you can combine two queries in multiple ways, and one query can be used as the building block for the other query.\r\nTo see how this works, let\u0027s look at a simple query:\r\nlet query1 =\r\n query {\r\n for customers in ctx.Main.Customers do\r\n where (customers.ContactTitle = \u0026quot;USA\u0026quot;)\r\n select (customers)}\r\n\r\nThe variable that is returned from the query is sometimes called a computation. If you write to evaluate\r\n(e.g. a foreach loop or |\u0026gt; Seq.toList) and display the address field from the customers returned by this\r\ncomputation, you see the following output:\r\nGREAL|Great Lakes Food Market|Howard Snyder|Marketing Manager|2732 Baker Blvd.|Eugene|OR|97403|USA|(503) 555-7555|\r\nHUNGC|Hungry Coyote Import Store|Yoshi Latimer|Sales Representative|City Center Plaza 516 Main St.|Elgin|OR|97827|USA|(503) 555-6874|(503) 555-2376\r\n...\r\nTRAIH|Trail\u0026#39;s Head Gourmet Provisioners|Helvetius Nagy|Sales Associate|722 DaVinci Blvd.|Kirkland|WA|98034|USA|(206) 555-8257|(206) 555-2174\r\nWHITC|White Clover Markets|Karl Jablonski|Owner|305 - 14th Ave. S. Suite 3B|Seattle|WA|98128|USA|(206) 555-4112|(206) 555-4115\r\n\r\nYou can now write a second query against the result of this query:\r\nlet query2 =\r\n query {\r\n for customers in query1 do\r\n where (customers.CompanyName = \u0026quot;The Big Cheese\u0026quot;)\r\n select customers}\r\n |\u0026gt; Seq.toArray\r\n\r\nNotice that the last word in the first line of this query is the computation returned from the previous query.\r\nThis second query produces the following output:\r\nTHEBI|The Big Cheese|Liz Nixon|Marketing Manager|89 Jefferson Way Suite 2|Portland|OR|97201|USA|(503) 555-3612|\r\n\r\nSQLProvider to Objects queries are composable because they operate on and usually return variables of type IQueryable\u0026lt;T\u0026gt;.\r\nIn other words, SQLProvider queries typically follow this pattern:\r\nlet (qry:IQueryable\u0026lt;\u0026#39;T\u0026gt;) =\r\n query {\r\n //for is like C# foreach\r\n for x in (xs:IQueryable\u0026lt;\u0026#39;T\u0026gt;) do\r\n select x\r\n }\r\n\r\n//\r\n\r\nThis is a simple mechanism to understand, but it yields powerful results.\r\nIt allows you to take complex problems, break them into manageable pieces, and solve them with code that is easy to understand and easy to maintain.\r\nGenerate composable queries by using .NET LINQ functions with IQueryable.\r\nThe difference between IEnumerable and IQueryable is basically that IEnumerable is executed in the IL while IQueryable can be translated as an expression tree to some other context (like a database query).\r\nThey are both lazy by nature, meaning they aren\u0027t evaluated until you enumerate the results.\r\nHere is an example:\r\nFirst, you have to add .NET LINQ:\r\nopen System.Linq\r\n\r\nThen, you can define a composable query outside the main query\r\ntype CustomersEntity = sql.dataContext.\u0060\u0060main.CustomersEntity\u0060\u0060\r\n\r\nlet companyNameFilter inUse =\r\n\r\n let myFilter2 : IQueryable\u0026lt;CustomersEntity\u0026gt; -\u0026gt; IQueryable\u0026lt;CustomersEntity\u0026gt; = fun x -\u0026gt; x.Where(fun i -\u0026gt; i.CustomerId = \u0026quot;ALFKI\u0026quot;)\r\n\r\n let queryable:(IQueryable\u0026lt;CustomersEntity\u0026gt; -\u0026gt; IQueryable\u0026lt;CustomersEntity\u0026gt;) =\r\n match inUse with\r\n |true -\u0026gt;\r\n (fun iq -\u0026gt; iq.Where(fun (c:CustomersEntity) -\u0026gt; c.CompanyName = \u0026quot;The Big Cheese\u0026quot;))\r\n |false -\u0026gt; \r\n myFilter2\r\n queryable\r\n\r\n(Let\u0027s assume that your inUse parameter is some complex data:\r\nE.g. Your sub-queries would come from other functions. Basic booleans you can just include to your where-clause)\r\nThen, you can create the main query\r\nlet query1 =\r\n query {\r\n for customers in ctx.Main.Customers do\r\n where (customers.ContactTitle = \u0026quot;USA\u0026quot;)\r\n select (customers)}\r\n\r\nand now call you are able to call the second query like this\r\nlet res = companyNameFilter true query1 |\u0026gt; Seq.toArray\r\n\r\nGenerate composable queries by using FSharp.Linq.ComposableQuery\r\nThe SQLProvider also supports composable queries by integrating the following library FSharpLinqComposableQuery.\r\nYou can read more about that library here: FSharp.Linq.ComposableQuery\r\nBecause it is implemented in the SQLProvider, you don\u0027t need to add FSharpComposableQuery in your script.\r\nExample for using FSharpComposableQuery\r\nlet qry1 =\r\n query { for u in dbContext.Users do\r\n select (u.Id, u.Name, u.Email)\r\n }\r\n\r\nlet qry2 =\r\n query { for c in dbContext.Cars do\r\n select (c.UserId, c.Brand, c.Year)\r\n }\r\n\r\nquery { for (i,n,e) in qry1 do\r\n join (u,b,y) in qry2 on (i = u)\r\n where (y \u0026gt; 2015)\r\n select (i,n,e,u,b,y)\r\n } |\u0026gt; Seq.toArray\r\n\r\nNested Select Where Queries\r\nYou can create a query like SELECT * FROM xs WHERE xs.x IN (SELECT y FROM ys))\r\nwith either LINQ Contains or custom operators: in |=| and not-in |\u0026lt;\u0026gt;|\r\nThis is done by not saying |\u0026gt; Seq.toArray to the first query:\r\nopen System.Linq\r\n\r\nlet nestedQueryTest =\r\n let qry1 = query {\r\n for emp in ctx.Hr.Employees do\r\n where (emp.FirstName.StartsWith(\u0026quot;S\u0026quot;))\r\n select (emp.FirstName)\r\n }\r\n query {\r\n for emp in ctx.Hr.Employees do\r\n where (qry1.Contains(emp.FirstName))\r\n select (emp.FirstName, emp.LastName)\r\n } |\u0026gt; Seq.toArray\r\n\r\nUsing non-strongly-typed __.GetColumn \u0022name\u0022\r\nAll the entities inherit from SqlEntity which has GetColumn-method.\r\nSo you can use non-strongly-typed columns like this:\r\nlet qry = \r\n query {\r\n for x in query1 do\r\n where ((x.GetColumn\u0026lt;string\u0026gt; \u0026quot;CustomerId\u0026quot;) = \u0026quot;ALFKI\u0026quot;)\r\n select (x.GetColumn\u0026lt;string\u0026gt; \u0026quot;CustomerId\u0026quot;)\r\n } |\u0026gt; Seq.head\r\n\r\nHowever, this is not recommended as one of the SQLProvider\u0027s key benefits is strong typing.\r\nGenerate composable queries from quotations\r\nYou can also construct composable queries using the F# quotation mechanism. For\r\nexample, if you need to select a filter function at runtime, you could write the\r\nfilters as quotations, and then include them in a query like this:\r\nlet johnFilter = \u0026lt;@ fun (employee : sql.dataContext.\u0060\u0060main.EmployeesEntity\u0060\u0060) -\u0026gt; employee.FirstName = \u0026quot;John\u0026quot; @\u0026gt;\r\nlet pamFilter = \u0026lt;@ fun (employee : sql.dataContext.\u0060\u0060main.EmployeesEntity\u0060\u0060) -\u0026gt; employee.FirstName = \u0026quot;Pam\u0026quot; @\u0026gt;\r\n\r\nlet runtimeSelectedFilter = if 1 = 1 then johnFilter else pamFilter\r\nlet employees =\r\n query {\r\n for emp in ctx.Main.Employees do\r\n where ((%runtimeSelectedFilter) emp) \r\n select emp\r\n } |\u0026gt; Seq.toArray\r\n\r\nQuotations are AST representations that the Linq-to-SQL translator can use.\r\n","headings":["Composable Queries","Definition of Composable Queries","Generate composable queries by using Linq IQueryable","Generate composable queries by using .NET LINQ functions with IQueryable.","Generate composable queries by using FSharp.Linq.ComposableQuery","Nested Select Where Queries","Using non-strongly-typed __.GetColumn \u0022name\u0022","Generate composable queries from quotations"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/constraints-relationships.html","title":"Constraints \u0026amp; Relationships\r\n","content":"Constraints \u0026amp; Relationships\r\nA typical relational database will have many connected tables and views\r\nthrough foreign key constraints. The SQL provider can show you these\r\nconstraints on entities. They appear as properties named the same as the\r\nconstraint in the database.\r\nYou can gain access to these child or parent entities by simply enumerating\r\nthe property in question.\r\nWhile SQL provider automatically generates getters from foreign-key relations, it doesn\u0027t have (yet) any automatic support for creating a properly ordered graph of related entities in a single transaction. However, SQL provider submits entities to a database in the same order they were created. As long as you create entities in their dependency order, you won\u0027t get foreign-key constraint violations.\r\n","headings":["Constraints \u0026amp; Relationships"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/contributing.html","title":"How to contribute\r\n","content":"How to contribute\r\nThis is how you can make a \u0022pull request\u0022, to suggest your modifications to be accepted to the code base.\r\n1. Download or clone the repository to your computer.\r\n(Or take git pull if you already have the repository.)\r\n\r\nYou need to get the .git folder inside the repository.\r\nIf the download doesn\u0027t work, you can use clone, which creates a separate folder and downloads the repository:\r\n git clone https://github.com/fsprojects/SQLProvider.git\r\n\r\n2. Edit and Commit\r\nHere are some tech details.\r\nDo the modifications and check the build and tests are working. Commit the changes to your local repository.\r\n3. Fork the GitHub repository.\r\nThis will \u0022copy\u0022 the repository for your account.\r\n\r\n4. Get Your Url\r\nIn GitHub, go to your copy of the repository (under your profile, Repositories-tab) and under Download, get the repository URL, e.g. https://github.com/myname/SqlProvider.git\r\n5. Add a Remote\r\nWith command line, add a remote to your repository URL:\r\n git remote add myrepo https://github.com/myname/SqlProvider.git\r\n\r\nUse the name you want for the repository and note your GitHub account in the URL. You can check the remotes with git remote -v.\r\n6. Push to Your Remote\r\nPush the latest version to your repository with\r\ngit push myrepo. You should see the modifications in GitHub under your repository.\r\n7. Create a Pull Request\r\nIn GitHub, under your repository, press the Create pull request -button. By default, everything should be correct: The base-fork is the one to which you want to send the modifications, and the head fork is your fork, so follow the wizard.\r\n\r\n8. Done.\r\nYour pull request should be visible under the \u0022Pull requests\u0022 -tab in the original repository. When you do more commits, you can ignore parts 3, 4 and 5, they has to be done just once.\r\n\r\n","headings":["How to contribute","1. Download or clone the repository to your computer.","2. Edit and Commit","3. Fork the GitHub repository.","4. Get Your Url","5. Add a Remote","6. Push to Your Remote","7. Create a Pull Request","8. Done."],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/crud.html","title":"CRUD sample\r\n","content":"CRUD sample\r\nopen System\r\n\r\n\r\nlet ctx = sql.GetDataContext()\r\n\r\nlet orders = ctx.Main.Orders\r\nlet employees = ctx.Main.Employees\r\n\r\nlet customer = ctx.Main.Customers |\u0026gt; Seq.head \r\nlet employee = ctx.Main.Employees |\u0026gt; Seq.head\r\nlet now = DateTime.Now\r\n\r\nCreate() has various overloads to make inserting records simple.\r\nCreate a new row\r\nlet row = orders.Create()\r\nrow.CustomerId \u0026lt;- customer.CustomerId\r\nrow.EmployeeId \u0026lt;- employee.EmployeeId\r\nrow.Freight \u0026lt;- 10M\r\nrow.OrderDate \u0026lt;- now.AddDays(-1.0)\r\nrow.RequiredDate \u0026lt;- now.AddDays(1.0)\r\nrow.ShipAddress \u0026lt;- \u0026quot;10 Downing St\u0026quot;\r\nrow.ShipCity \u0026lt;- \u0026quot;London\u0026quot;\r\nrow.ShipName \u0026lt;- \u0026quot;Dragons den\u0026quot;\r\nrow.ShipPostalCode \u0026lt;- \u0026quot;SW1A 2AA\u0026quot;\r\nrow.ShipRegion \u0026lt;- \u0026quot;UK\u0026quot;\r\nrow.ShippedDate \u0026lt;- now\r\n\r\nSubmit updates to the database\r\nctx.SubmitUpdates()\r\n\r\nAfter updating, your item (row) will have the Id property.\r\nYou can also create with the longer \u0060\u0060Create(...)\u0060\u0060(parameters)-method like this:\r\nlet emp = ctx.Main.Employees.\u0060\u0060Create(FirstName, LastName)\u0060\u0060(\u0026quot;Don\u0026quot;, \u0026quot;Syme\u0026quot;)\r\n\r\nDelete the row\r\nrow.Delete()\r\n\r\nSubmit updates to the database\r\nctx.SubmitUpdates()\r\n\r\nInsert a list of records:\r\ntype Employee = {\r\n FirstName:string\r\n LastName:string\r\n}\r\n\r\nlet mvps1 = [\r\n {FirstName=\u0026quot;Andrew\u0026quot;; LastName=\u0026quot;Kennedy\u0026quot;};\r\n {FirstName=\u0026quot;Mads\u0026quot;; LastName=\u0026quot;Torgersen\u0026quot;};\r\n {FirstName=\u0026quot;Martin\u0026quot;;LastName=\u0026quot;Odersky\u0026quot;};\r\n]\r\n\r\nmvps1 \r\n |\u0026gt; List.map (fun x -\u0026gt;\r\n let row = employees.Create()\r\n row.FirstName \u0026lt;- x.FirstName\r\n row.LastName \u0026lt;- x.LastName)\r\n\r\nctx.SubmitUpdates()\r\n\r\nOr directly specify the fields:\r\nlet mvps2 = [\r\n {FirstName=\u0026quot;Byron\u0026quot;; LastName=\u0026quot;Cook\u0026quot;};\r\n {FirstName=\u0026quot;James\u0026quot;; LastName=\u0026quot;Huddleston\u0026quot;};\r\n {FirstName=\u0026quot;Xavier\u0026quot;;LastName=\u0026quot;Leroy\u0026quot;};\r\n]\r\n\r\nmvps2\r\n |\u0026gt; List.map (fun x -\u0026gt; \r\n employees.Create(x.FirstName, x.LastName) \r\n )\r\n\r\nctx.SubmitUpdates()\r\n\r\nupdate a single row\r\nassuming Id is unique\r\ntype Employee2 = {\r\n Id:int\r\n FirstName:string\r\n LastName:string\r\n}\r\n\r\nlet updateEmployee (employee: Employee2) =\r\n let foundEmployeeMaybe = query {\r\n for p in ctx.Public.Employee2 do\r\n where (p.Id = employee.Id)\r\n select (Some p)\r\n exactlyOneOrDefault\r\n }\r\n match foundEmployeeMaybe with\r\n | Some foundEmployee -\u0026gt;\r\n foundEmployee.FirstName \u0026lt;- employee.FirstName\r\n foundEmployee.LastName \u0026lt;- employee.LastName\r\n ctx.SubmitUpdates()\r\n | None -\u0026gt; ()\r\n\r\nlet updateEmployee\u0026#39; (employee: Employee2) =\r\n query {\r\n for p in ctx.Public.Employee2 do\r\n where (p.Id = employee.Id)\r\n }\r\n |\u0026gt; Seq.iter( fun e -\u0026gt;\r\n e.FirstName \u0026lt;- employee.FirstName\r\n e.LastName \u0026lt;- employee.LastName\r\n )\r\n ctx.SubmitUpdates()\r\n\r\nlet john = {\r\n Id = 1\r\n FirstName = \u0026quot;John\u0026quot;\r\n LastName = \u0026quot;Doe\u0026quot; }\r\n\r\nupdateEmployee john\r\nupdateEmployee\u0026#39; john\r\n\r\nFinally it is also possible to specify a seq of string * obj, which is precisely the\r\noutput of .ColumnValues:\r\nemployees \r\n |\u0026gt; Seq.map (fun x -\u0026gt;\r\n employee.Create(x.ColumnValues)) // create twins\r\n |\u0026gt; Seq.toList\r\n\r\nlet twins = ctx.GetUpdates() // Retrieve the FSharp.Data.Sql.Common.SqlEntity objects\r\n\r\nctx.ClearUpdates() // delete the updates\r\nctx.GetUpdates() // Get the updates\r\nctx.SubmitUpdates() // no record is added\r\n\r\nInside SubmitUpdate the transaction is created by default TransactionOption, which is Required: Shares a transaction, if one exists, and creates a new transaction if necessary. So, if you have query-operation before SubmitUpdates, you should create your own transaction to wrap these into the same transaction.\r\nSQLProvider also supports async database operations:\r\nctx.SubmitUpdatesAsync() // |\u0026gt; Async.AwaitTask\r\n \r\n\r\nOnConflict\r\nThe SQLite, PostgreSQL 9.5\u002B and MySQL 8.0\u002B providers support conflict resolution for INSERT statements.\r\nThey allow the user to specify if a unique constraint violation should be solved by ignoring the statement (DO NOTHING) or updating existing rows (DO UPDATE).\r\nYou can leverage this feature by setting the OnConflict property on a row object:\r\n* Setting it to DoNothing will add the DO NOTHING clause (PostgreSQL) or the OR IGNORE clause (SQLite).\r\n* Setting it to Update will add a DO UPDATE clause on the primary key constraint for all columns (PostgreSQL) or a OR REPLACE clause (SQLite).\r\nSql Server has a similar feature in the form of the MERGE statement. This is not yet supported.\r\nlet ctx = sql.GetDataContext()\r\n\r\nlet emp = ctx.Main.Employees.Create()\r\nemp.Id \u0026lt;- 1\r\nemp.FirstName \u0026lt;- \u0026quot;Jane\u0026quot;\r\nemp.LastName \u0026lt;- \u0026quot;Doe\u0026quot;\r\n\r\nemp.OnConflict \u0026lt;- FSharp.Data.Sql.Common.OnConflict.Update\r\n\r\nctx.SubmitUpdates()\r\n\r\nDelete-query for multiple items\r\nTo delete many items from a database table, DELETE FROM [dbo].[EMPLOYEES] WHERE (...), there is a way, although we don\u0027t recommend deleting items from a database. Instead, you should consider a deletion-flag column. You should also back up your database before trying this. Note that changes are immediately saved to the database even if you don\u0027t call ctx.SubmitUpdates().\r\nquery {\r\n for c in ctx.Dbo.Employees do\r\n where (...)\r\n} |\u0026gt; Seq.\u0060\u0060delete all items from single table\u0060\u0060 |\u0026gt; Async.RunSynchronously\r\n\r\nSelecting which Create() to use\r\nThere are 3 overrides of create.\r\nThe ideal one to use is the long one \u0060\u0060Create(...)\u0060\u0060(...):\r\nlet emp = ctx.Main.Employees.\u0060\u0060Create(FirstName, LastName)\u0060\u0060(\u0026quot;Don\u0026quot;, \u0026quot;Syme\u0026quot;)\r\n\r\nThis is because it will fail if your database structure changes.\r\nSo, when your table gets new columns, the code will fail at compile time.\r\nThen you decide what to do with the new columns, and not let a bug to customers.\r\nBut you may want to use the plain .Create() if your setup is not optimal.\r\nTry to avoid these conditions:\r\n\r\nIf your editor intellisense is not working for backtick-variables.\r\nYou have lot of nullable columns in your database.\r\nYou want to use F# like a dynamic language.\r\n\r\nIn the last case you\u0027ll be maintaining code like this:\r\nlet employeeId = 123\r\n// Got some untyped array of data from the client\r\nlet createSomeItem (data: seq\u0026lt;string*obj\u0026gt;) = \r\n data\r\n |\u0026gt; Seq.map( // Some parsing and validation:\r\n function \r\n // Skip some fields\r\n | \u0026quot;EmployeeId\u0026quot;, x\r\n | \u0026quot;PermissionLevel\u0026quot;, x -\u0026gt; \u0026quot;\u0026quot;, x\r\n // Convert and validate some fields\r\n | \u0026quot;PostalCode\u0026quot;, x -\u0026gt; \r\n \u0026quot;PostalCode\u0026quot;, x.ToString().ToUpper().Replace(\u0026quot; \u0026quot;, \u0026quot;\u0026quot;) |\u0026gt; box\r\n | \u0026quot;BirthDate\u0026quot;, x -\u0026gt; \r\n let bdate = x.ToString() |\u0026gt; DateTime.Parse\r\n if bdate.AddYears(18) \u0026gt; DateTime.UtcNow then\r\n failwith \u0026quot;Too young!\u0026quot;\r\n else\r\n \u0026quot;BirthDate\u0026quot;, bdate.ToString(\u0026quot;yyyy-MM-dd\u0026quot;) |\u0026gt; box\r\n | others -\u0026gt; others)\r\n |\u0026gt; Seq.filter (fun (key,_) -\u0026gt; key \u0026lt;\u0026gt; \u0026quot;\u0026quot;)\r\n // Add some fields:\r\n |\u0026gt; Seq.append [|\u0026quot;EmployeeId\u0026quot;, employeeId |\u0026gt; box; \r\n \u0026quot;Country\u0026quot;, \u0026quot;UK\u0026quot; |\u0026gt; box |]\r\n |\u0026gt; ctx.Main.Employees.Create\r\n\r\nWhat to do if your creation fails systematically every time\r\nSome underlying database connection libraries have problems with serializing underlying data types.\r\nSo, if this fails:\r\nemp.BirthDate \u0026lt;- DateTime.UtcNow\r\nctx.SubmitUpdates()\r\n\r\nTry using .SetColumn(\u0022ColumnName\u0022, value |\u0026gt; box)\r\nfor example:\r\nemp.SetColumn(\u0026quot;BirthDate\u0026quot;, DateTime.UtcNow.ToString(\u0026quot;yyyy-MM-dd HH\\:mm\\:ss\u0026quot;) |\u0026gt; box)\r\nctx.SubmitUpdates()\r\n\r\nSetColumn takes an object, giving you more control over the type serialization.\r\n","headings":["CRUD sample","OnConflict","Delete-query for multiple items","Selecting which Create() to use","What to do if your creation fails systematically every time"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/general.html","title":"general","content":"To use the type provider, you must first create a type alias.\r\nIn this declaration, you can pass various pieces of information known\r\nas static parameters to initialize properties such as the connection string\r\nand database vendor type that you are connecting to.\r\nIn the following examples, a SQLite database will be used. You can read in\r\nmore detail about the available static parameters in other areas of the\r\ndocumentation.\r\ntype sql = SqlDataProvider\u0026lt;\r\n Common.DatabaseProviderTypes.SQLITE,\r\n connectionString,\r\n SQLiteLibrary=Common.SQLiteLibrary.SystemDataSQLite,\r\n ResolutionPath = resolutionPath,\r\n CaseSensitivityChange = Common.CaseSensitivityChange.ORIGINAL\r\n \u0026gt;\r\n\r\nNow we have a type sqlrepresenting the SQLite database provided in\r\nthe connectionString parameter. To start exploring the database\u0027s\r\nschema and reading its data, you create a DataContext value.\r\nlet ctx = sql.GetDataContext()\r\n\r\nIf you want to use non-literal connectionString at runtime (e.g. encrypted production\r\npasswords), you can pass your runtime connectionString parameter to GetDataContext:\r\nlet connectionString2 = \u0026quot;(insert runtime connection here)\u0026quot;\r\nlet ctx2 = sql.GetDataContext connectionString2\r\n\r\nWhen you press . on ctx, intellisense will display a list of properties\r\nrepresenting the available tables and views within the database.\r\nIn the simplest case, you can treat these properties as sequences that can\r\nbe enumerated.\r\nlet customers = ctx.Main.Customers |\u0026gt; Seq.toArray\r\n\r\nThis is the equivalent of executing a query that selects all rows and\r\ncolumns from the [main].[customers] table.\r\nNotice the resulting type is an array of [Main].[Customers]Entity. These\r\nentities will contain properties relating to each column name from the table.\r\nlet firstCustomer = customers.[0]\r\nlet name = firstCustomer.ContactName\r\n\r\nEach property is correctly typed depending on the database column\r\ndefinitions. In this example, firstCustomer.ContactName is a string.\r\nMost databases support some comments/descriptions/remarks to\r\ntables and columns for documentation purposes. These descriptions are fetched\r\nto tooltips for the tables and columns.\r\nConstraints and Relationships\r\nA typical relational database will have many connected tables and views\r\nthrough foreign key constraints. The SQL provider can show you these\r\nconstraints on entities. They appear as properties named the same as the\r\nconstraint in the database.\r\nYou can gain access to these child or parent entities by simply enumerating\r\nthe property in question.\r\nlet orders = firstCustomer.\u0060\u0060main.Orders by CustomerID\u0060\u0060 |\u0026gt; Seq.toArray\r\n\r\norders now contain all the orders belonging to firstCustomer. You will\r\nsee the orders type is an array of [Main].[Orders]Entity indicating the\r\nresulting entities are from the [main].[Orders] table in the database.\r\nIf you hover over FK_Orders_0_0, intellisense will display information\r\nabout the constraint in question, including the names of the tables involved\r\nand the key names.\r\nBehind the scenes, the SQL provider has automatically constructed and executed\r\na relevant query using the entity\u0027s primary key.\r\nBasic Querying\r\nThe SQL provider supports LINQ queries using F#\u0027s query expression syntax.\r\nlet customersQuery = \r\n query { \r\n for customer in ctx.Main.Customers do\r\n select customer\r\n }\r\n |\u0026gt; Seq.toArray\r\n\r\nSupport also async queries\r\nlet customersQueryAsync = \r\n query { \r\n for customer in ctx.Main.Customers do\r\n select customer\r\n }\r\n |\u0026gt; Seq.executeQueryAsync \r\n\r\nThe above example is identical to the query that was executed when\r\nctx.[main].[Customers] |\u0026gt; Seq.toArray was evaluated.\r\nYou can extend this basic query to filter criteria by introducing\r\none or more where clauses\r\nlet filteredQuery = \r\n query { \r\n for customer in ctx.Main.Customers do\r\n where (customer.ContactName = \u0026quot;John Smith\u0026quot;)\r\n select customer\r\n }\r\n |\u0026gt; Seq.toArray\r\n\r\nlet multipleFilteredQuery = \r\n query { \r\n for customer in ctx.Main.Customers do\r\n where ((customer.ContactName = \u0026quot;John Smith\u0026quot; \u0026amp;\u0026amp; customer.Country = \u0026quot;England\u0026quot;) || customer.ContactName = \u0026quot;Joe Bloggs\u0026quot;)\r\n select customer\r\n }\r\n |\u0026gt; Seq.toArray\r\n\r\nThe SQL provider will accept any level of nested complex conditional logic\r\nin the where clause.\r\nTo access related data, you can either enumerate directly over the constraint\r\nproperty of an entity, or you can perform an explicit join.\r\nlet automaticJoinQuery = \r\n query { \r\n for customer in ctx.Main.Customers do\r\n for order in customer.\u0060\u0060main.Orders by CustomerID\u0060\u0060 do\r\n where (customer.ContactName = \u0026quot;John Smith\u0026quot;)\r\n select (customer, order)\r\n }\r\n |\u0026gt; Seq.toArray\r\n\r\nlet explicitJoinQuery = \r\n query { \r\n for customer in ctx.Main.Customers do\r\n join order in ctx.Main.Orders on (customer.CustomerId = order.CustomerId)\r\n where (customer.ContactName = \u0026quot;John Smith\u0026quot;)\r\n select (customer, order)\r\n }\r\n |\u0026gt; Seq.toArray\r\n\r\nThese queries have identical results; the only difference is that one\r\nrequires explicit knowledge of which tables join where and how, and the other doesn\u0027t.\r\nYou might have noticed the select expression has now changed to (customer, order).\r\nAs you may expect, this will return an array of tuples where the first item\r\nis a [Main].[Customers]Entity and the second a [Main].[Orders]Entity.\r\nOften, you will not be interested in selecting entire entities from the database.\r\nChanging the select expression to use the entities\u0027 properties will cause the\r\nSQL provider to select only the columns you have asked for, which is an\r\nimportant optimization.\r\nlet ordersQuery = \r\n query { \r\n for customer in ctx.Main.Customers do\r\n for order in customer.\u0060\u0060main.Orders by CustomerID\u0060\u0060 do\r\n where (customer.ContactName = \u0026quot;John Smith\u0026quot;)\r\n select (customer.ContactName, order.OrderDate, order.ShipAddress)\r\n }\r\n |\u0026gt; Seq.toArray\r\n\r\nThe results of this query will return the name, order date and shipping address\r\nonly. By doing this, you no longer have access to entity types.\r\nThe SQL provider supports various other query keywords and features that you\r\ncan read about elsewhere in this documentation.\r\nIndividuals\r\nThe SQL provider has the ability via intellisense to navigate the actual data\r\nheld within a table or view. You can then bind that data as an entity to a value.\r\nlet BERGS = ctx.Main.Customers.Individuals.BERGS\r\n\r\nEvery table and view has an Individuals property. When you press the dot on\r\nthis property, intellisense will display a list of the data in that table,\r\nusing whatever the primary key is as the text for each one.\r\nIn this case, the primary key for [main].[Customers] is a string, and I\r\nhave selected one named BERGS. You will see the resulting type is\r\n[main].[Customers]Entity.\r\nThe primary key is not usually very useful for identifying data, however, so\r\nin addition to this, you will see a series of properties named \u0022As X\u0022 where X\r\nis the name of a column in the table.\r\nWhen you press \u0022.\u0022 on one of these properties, the data is re-projected to you\r\nusing both the primary key and the text of the column you have selected.\r\nlet christina = ctx.Main.Customers.Individuals.\u0060\u0060As ContactName\u0060\u0060.\u0060\u0060BERGS, Christina Berglund\u0060\u0060\r\n\r\nDataContext\r\nYou should create and use one data context as long as it has the parameters you need.\r\nAn example of when to use multiple data contexts is when you need to pass different\r\nconnection strings to connect to different instances of the same database,\r\ne.g. to copy data between them.\r\nThe connection itself is not stored and reused with an instance of the data context.\r\nThe data context creates a connection when you execute a query or when you call\r\nSubmitUpdates(). In terms of transactions, the data context object tracks (full)\r\nentities that were retrieved using it via queries or Individuals and manage their\r\nstates. Upon calling SubmitUpdates(), all entities modified/created that belong to\r\nthat data context are wrapped in a single transaction scope. Then a connection\r\nis created and thus enlisted into the transaction.\r\n*#Important*:\r\nThe database schema (SQLProvider\u0027s understanding of the structure of tables, columns, names, types, etc of your database\r\n- a \u0022snapshot\u0022 if you will) is cached lazily while you use it.\r\nWhat does that entail?\r\nA. Once SQLProvider gets a \u0022mental model\u0022 of your database (the schema),\r\nthat is what is used for any intellisense/completion suggestions for the rest of your IDE session.\r\nThis is a fantastic feature because it means you\u0026#39;re not assaulting your database with a \r\nnew \u0026quot;What are you like?\u0026quot; query on EVERY SINGLE KEYSTROKE. \r\n\r\nBut what if the database changes? SQLProvider will NOT see your change because its source of truth is\r\nthat locally cached schema snapshot it took at right when it started, and that snapshot will persist until\r\none of 2 things happens: \r\n\r\n1. A restart of your Editor/IDE. \r\n The database is queried right when SQLProvider starts up, so you \r\n could certainly force a refresh by restarting. \r\n \r\n2. Forced clearing of the local database schema cache.\r\n If SQLProvider is currently able to communicate with the database,\r\n you can force the local cache to clear, to be invalidated and refreshed by\r\n by using what are called \u0060Design Time Commands\u0060, specifically the \r\n \u0060ClearDatabaseSchemaCache\u0060 method. \r\n \r\n You\u0026#39;re probably thinking: \u0026quot;Ok, fine, that sounds good! How do I do that though?\u0026quot;\r\n \r\n Just as SQLProvider can interact at compile time with the structure of data in your \r\n database through your editor\u0026#39;s completion tooling \r\n (intellisense, language server protocol completion suggestions, etc),\r\n you can also interact with SQLProvider at compile time the exact same way. \r\n \r\n SQLProvider provides methods under the DataContext you get from your type alias, \r\n and they actually show up as \u0060\u0060Design Time Commands\u0060\u0060 in the completion. \r\n \r\n Select that, and then \u0026quot;dot into\u0026quot; it afterwards, then under that is ClearDatabaseSchemaCache.\r\n Then, after that typing in a \u0026quot;.\u0026quot; will actually RUN the command, thereby clearing the cache. \r\n\r\nB. LAZY evaluation means that where you save the database schema in your code matters.\r\nDo not call the \u0022Design Time Command\u0022 SaveContextSchema at the top of your code. FSharp is evaluated\r\nfrom top to bottom, so if you call SaveContextSchema at the top before you ask for specific columns in your code,\r\nyou will not get a schema that reflects your needs.\r\nsql.GetDataContext(cs).\u0060\u0060Design Time Commands\u0060\u0060.SaveContextSchema // put a \u0026quot;.\u0026quot; at the end to call the command at compile time.\r\n\r\nHow fast is SQLProvider?\r\nYou may wonder if all this magic comes with a huge performance cost. However, when working with databases,\r\nyour network connection to SQL-database is typically the bottleneck, not your processor speed.\r\nThat\u0027s why SQLProvider short-circuits and optimises your queries as much as possible.\r\nThere is a performance-test project in this repo. Here is a sample run:\r\n\r\nBenchmarkDotNet v0.13.12\r\n.NET 8\r\nLaptop, Intel i9 13th Gen on Windows 11\r\nMicrosoft SQL Server on local computer\r\n\r\n\r\n\r\n\r\nMethod\r\nrowsReturned\r\nMean\r\nError\r\nStdDev\r\nMedian\r\nRatio\r\nRatioSD\r\nGen0\r\nGen1\r\nGen2\r\n\r\n\r\n\r\n\r\nFirstNamesToList\r\n25\r\n1.110 ms\r\n0.0222 ms\r\n0.0618 ms\r\n1.096 ms\r\n1.00\r\n0.00\r\n27.3438\r\n11.7188\r\n0\r\n\r\n\r\nFirstNamesToListAsync\r\n25\r\n1.257 ms\r\n0.0460 ms\r\n0.1326 ms\r\n1.300 ms\r\n1.14\r\n0.13\r\n29.2969\r\n13.6719\r\n0\r\n\r\n\r\nFirstNamesToList\r\n2500\r\n2.845 ms\r\n0.0561 ms\r\n0.0709 ms\r\n2.829 ms\r\n1.00\r\n0.00\r\n234.3750\r\n179.6875\r\n0\r\n\r\n\r\nFirstNamesToListAsync\r\n2500\r\n3.030 ms\r\n0.0820 ms\r\n0.2325 ms\r\n2.946 ms\r\n1.07\r\n0.09\r\n234.3750\r\n171.8750\r\n0\r\n\r\n\r\n\r\n\r\n","headings":["Constraints and Relationships","Basic Querying","Individuals","DataContext","How fast is SQLProvider?"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/individuals.html","title":"Individuals\r\n","content":"Individuals\r\nFind individual rows in tables with code completion in the editor.\r\nopen System\r\nopen FSharp.Data.Sql\r\n\r\ntype sql = SqlDataProvider\u0026lt;\r\n Common.DatabaseProviderTypes.SQLITE,\r\n connectionString,\r\n SQLiteLibrary=Common.SQLiteLibrary.SystemDataSQLite,\r\n ResolutionPath = resolutionPath,\r\n CaseSensitivityChange = Common.CaseSensitivityChange.ORIGINAL\r\n \u0026gt;\r\n\r\nlet ctx = sql.GetDataContext()\r\n\r\nlet customers = ctx.Main.Customers\r\n\r\nGet individual customer row by primary key value\r\ncustomers.Individuals.COMMI\r\n\r\nGet individual customer row using address\r\ncustomers.Individuals.\u0060\u0060As ContactName\u0060\u0060.\u0060\u0060COMMI, Pedro Afonso\u0060\u0060\r\n\r\nGet individual customer row using address\r\ncustomers.Individuals.\u0060\u0060As Address\u0060\u0060.\u0060\u0060CONSH, Berkeley Gardens 12 Brewery\u0060\u0060\r\n\r\n","headings":["Individuals"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/mappers.html","title":"mappers","content":"Adding a Mapper using dataContext to use generated types from db\r\nThis mapper will ensure that you always sync your types with those you receive from your DB.\r\nFirst, add a Domain Model\r\nopen System\r\n\r\ntype Employee = {\r\n EmployeeId : int64\r\n FirstName : string\r\n LastName : string\r\n HireDate : DateTime\r\n}\r\n\r\nThen you can create the mapper using dataContext to use generated types from db\r\nlet mapEmployee (dbRecord:sql.dataContext.\u0060\u0060main.EmployeesEntity\u0060\u0060) : Employee =\r\n { EmployeeId = dbRecord.EmployeeId\r\n FirstName = dbRecord.FirstName\r\n LastName = dbRecord.LastName\r\n HireDate = dbRecord.HireDate }\r\n\r\nSqlProvider also has a .MapTo\u0026lt;\u0027T\u0026gt; convenience method:\r\nlet ctx = sql.GetDataContext()\r\n\r\nlet orders = ctx.Main.Orders\r\nlet employees = ctx.Main.Employees\r\n\r\ntype Employee2 = {\r\n FirstName:string\r\n LastName:string\r\n }\r\n\r\nlet qry = query { for row in employees do\r\n select row} |\u0026gt; Seq.map (fun x -\u0026gt; x.MapTo\u0026lt;Employee2\u0026gt;())\r\n\r\nThe target type can be a record (as in the example) or a class type with properties named as the source columns and with a parameterless setter.\r\nThe target field name can also be different than the column name; in this case, it must be decorated with the MappedColumnAttribute custom attribute:\r\nopen FSharp.Data.Sql.Common\r\n\r\ntype Employee3 = {\r\n [\u0026lt;MappedColumn(\u0026quot;FirstName\u0026quot;)\u0026gt;] GivenName:string\r\n [\u0026lt;MappedColumn(\u0026quot;LastName\u0026quot;)\u0026gt;] FamilyName:string\r\n }\r\n\r\nlet qry2 = \r\n query { \r\n for row in employees do\r\n select row} |\u0026gt; Seq.map (fun x -\u0026gt; x.MapTo\u0026lt;Employee3\u0026gt;())\r\n\r\nOr alternatively, the ColumnValues from SQLEntity can be used to create a map, with the\r\ncolumn as a key:\r\nlet rows = \r\n query { \r\n for row in employees do\r\n select row} |\u0026gt; Seq.toArray\r\n\r\nlet employees2map = rows |\u0026gt; Seq.map(fun i -\u0026gt; i.ColumnValues |\u0026gt; Map.ofSeq)\r\nlet firstNames = employees2map |\u0026gt; Seq.map (fun x -\u0026gt; x.[\u0026quot;FirstName\u0026quot;])\r\n\r\n","headings":["Adding a Mapper using dataContext to use generated types from db"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/msaccess.html","title":"SQL Provider for MSAccess\r\n","content":"SQL Provider for MSAccess\r\nMSAccess is based on System.Data.OleDb. Use ACE drivers for databases \u0026gt; Access 2007 (with\r\n.accdb extension). For databases \u0026lt; 2007 (with .mdb extension),\r\nJET drivers can be used, although ACE will also work.\r\nhttp://www.microsoft.com/download/en/confirmation.aspx?id=23734\r\nParameters\r\nConnectionString\r\nA connection string used to connect to Microsoft Access instance; typical\r\nconnection strings for the driver apply here. See\r\n(MSAccess Connection Strings Documentation) []\r\nfor a complete list of connection string options.\r\n//TODO: link to reference\r\n\r\n[\u0026lt;Literal\u0026gt;]\r\nlet connectionString1 = \u0026quot;Provider=Microsoft.ACE.OLEDB.12.0; Data Source= \u0026quot; \u002B __SOURCE_DIRECTORY__ \u002B @\u0026quot;..\\..\\..\\files\\msaccess\\Northwind.accdb\u0026quot;\r\n\r\n[\u0026lt;Literal\u0026gt;]\r\nlet connectionString2 = \r\n \u0026quot;Provider=Microsoft.Jet.OLEDB.4.0; Data Source= \u0026quot; \u002B\r\n __SOURCE_DIRECTORY__ \u002B \r\n @\u0026quot;..\\..\\..\\files\\msaccess\\Northwind.mdb\u0026quot;\r\n\r\nConnectionStringName\r\nInstead of storing the connection string in the source code / fsx script, you\r\ncan store values in the App.config file. This is the name of the\r\nconnectionString key/value pair stored in App.config (TODO: confirm file name).\r\n// found in App.config (TODO:confirm)\r\nlet connexStringName = \u0026quot;DefaultConnectionString\u0026quot;\r\n\r\nDatabaseVendor\r\nFrom the FSharp.Data.Sql.Common.DatabaseProviderTypes enumeration. For MSAccess,\r\nuse Common.DatabaseProviderTypes.MSACCESS.\r\nlet dbVendor = FSharp.Data.Sql.Common.DatabaseProviderTypes.MSACCESS\r\n\r\nResolutionPath\r\nPath to search for assemblies containing database vendor-specific connections\r\nand custom types. Type the path where Npgsql.Data.dll is stored.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet resolutionPath = __SOURCE_DIRECTORY__\r\n\r\nIndividualsAmount\r\nSets the count to load for each individual. See (individuals)[individuals.html]\r\nfor further info.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet useOptTypes = true\r\n\r\n\r\n#r \u0026quot;FSharp.Data.SqlProvider.dll\u0026quot;\r\nopen FSharp.Data.Sql\r\n\r\n//type accdb = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.MSACCESS , connectionString1, ResolutionPath=resolutionPath \u0026gt;\r\n//let accdbctx = accdb.GetDataContext()\r\n//\r\n//let accdbcustomers = accdbctx.Northwind.Customers|\u0026gt; Seq.toArray\r\n\r\ntype mdb = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.MSACCESS, connectionString2, ResolutionPath=resolutionPath, UseOptionTypes=useOptTypes \u0026gt;\r\nlet mdbctx = mdb.GetDataContext()\r\n\r\nlet mdbcustomers = \r\n mdbctx.Northwind.Customers \r\n |\u0026gt; Seq.map(fun c -\u0026gt; \r\n c.ColumnValues |\u0026gt; Seq.toList) \r\n |\u0026gt; Seq.toList\r\n\r\n","headings":["SQL Provider for MSAccess","Parameters","ConnectionString","ConnectionStringName","DatabaseVendor","ResolutionPath","IndividualsAmount"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/mssql.html","title":"MSSQL Provider\r\n","content":"MSSQL Provider\r\nParameters\r\nDatabaseVendor\r\nFrom the FSharp.Data.Sql.Common.DatabaseProviderTypes enumeration. For MSSQL,\r\nuse Common.DatabaseProviderTypes.MSSQLSERVER.\r\nlet [\u0026lt;Literal\u0026gt;] dbVendor = Common.DatabaseProviderTypes.MSSQLSERVER\r\n\r\nConnectionString\r\nA basic connection string used to connect to MSSQL instance; typical\r\nconnection strings for the driver apply here. See\r\nMSSQL Connecting Strings Documentation\r\nfor a complete list of connection string options.\r\nlet [\u0026lt;Literal\u0026gt;] connString = \u0026quot;Server=localhost;Database=test;User Id=test;Password=test\u0026quot;\r\n\r\nConnectionStringName\r\nInstead of storing the connection string in the source code / fsx script, you\r\ncan store values in the App.config file. This is the name of the\r\nconnectionString key/value pair stored in App.config.\r\n// found in App.config\r\nlet [\u0026lt;Literal\u0026gt;] connexStringName = \u0026quot;DefaultConnectionString\u0026quot;\r\n\r\nIndividualsAmount\r\nSets the count to load for each individual. See individuals\r\nfor further info.\r\nlet [\u0026lt;Literal\u0026gt;] indivAmount = 1000\r\n\r\nUseOptionTypes\r\nIf true, F# option types will be used in place of nullable database columns.\r\nIf false, you will receive the default value of the column\u0027s type\r\nif the value is null in the database. The default is FSharp.Data.Sql.Common.NullableColumnType.NO_OPTION.\r\nlet [\u0026lt;Literal\u0026gt;] useOptTypes = FSharp.Data.Sql.Common.NullableColumnType.OPTION\r\n\r\ntype sql =\r\n SqlDataProvider\u0026lt;\r\n dbVendor,\r\n connString,\r\n IndividualsAmount = indivAmount,\r\n UseOptionTypes = useOptTypes\u0026gt;\r\n\r\nBecause MSSQL databases can be huge, there is an optional constructor parameter TableNames that can be used as a filter.\r\nUsing Microsoft.Data.SqlClient.dll instead of build-in System.Data.SqlClient.dll\r\nTo use another driver, Microsoft.Data.SqlClient.dll, you have to set your provider to Common.DatabaseProviderTypes.MSSQLSERVER_DYNAMIC and copy the reference files\r\nfrom the NuGet package to local resolutionPath (e.g. Microsoft.Data.SqlClient.dll, Microsoft.Data.SqlClient.SNI.dll and Microsoft.Data.SqlClient.SNI.x86.dll).\r\nUsing SQLProvider with SSDT\r\nYou can use SQLProvider with SSDT.\r\n","headings":["MSSQL Provider","Parameters","DatabaseVendor","ConnectionString","ConnectionStringName","IndividualsAmount","UseOptionTypes","Using Microsoft.Data.SqlClient.dll instead of build-in System.Data.SqlClient.dll","Using SQLProvider with SSDT"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/mssqlssdt.html","title":"MSSQL SSDT Provider\r\n","content":"MSSQL SSDT Provider\r\nThe SSDT provider allows types to be provided via SQL Server schema scripts in an SSDT project. No live database connection is required!\r\nParameters\r\nDatabaseVendor (required)\r\nUse MSSQLSERVER_SSDT from the FSharp.Data.Sql.Common.DatabaseProviderTypes enumeration.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet dbVendor = Common.DatabaseProviderTypes.MSSQLSERVER_SSDT\r\n\r\nSsdtPath (required)\r\nThe SsdtPath must point to a .dacpac file.\r\nNotes:\r\n\r\nA .dacpac file is generated when an SSDT project is built and can be found in the bin/Debug folder.\r\nFor development, you can set the SsdtPath to point to the generated .dacpac file in the SSDT project Debug folder. (Using a [\u0026lt;Literal\u0026gt;] ssdtPath allows relative pathing).\r\nFor deployment, the SSDT provider will search for the .dacpac file in the entry assembly folder.\r\nLinking the generated .dacpac file to your project and setting it to CopyToOutputDirectory will ensure that it will exist in the assembly folder for deployment.\r\n\r\n[\u0026lt;Literal\u0026gt;]\r\nlet ssdtPath = __SOURCE_DIRECTORY__ \u002B @\u0026quot;/../../files/mssqlssdt/AdventureWorks_SSDT.dacpac\u0026quot;\r\n\r\nExample of the minimal required options for the SSDT provider:\r\ntype DB = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.MSSQLSERVER_SSDT, SsdtPath = ssdtPath\u0026gt;\r\n\r\n// To reload schema: 1) uncomment the line below; 2) save; 3) recomment; 4) save again and wait.\r\n//DB.GetDataContext().\u0060\u0060Design Time Commands\u0060\u0060.ClearDatabaseSchemaCache\r\n\r\nReloading the schema\r\nKeeping the above Design Time Command commented out just below your SqlDataProvider type helps refresh the generated types after a schema change.\r\nOptional Parameters\r\nUseOptionTypes\r\nIf FSharp.Data.Sql.Common.NullableColumnType.OPTION, F# option types will be used in place of nullable database columns. If NO_OPTION, you will always receive the default value of the column\u0027s type even if it is null in the database.\r\nTable Names Filter\r\nThe SSDT provider currently supports a simple comma-delimited list of allowed table names (wildcards are not currently supported).\r\nAdventureWorks Example\r\nlet ctx = DB.GetDataContext()\r\n\r\nlet orderDetails =\r\n query {\r\n for o in ctx.SalesLt.SalesOrderHeader do\r\n for d in o.\u0060\u0060SalesLT.SalesOrderDetail by SalesOrderID\u0060\u0060 do\r\n select (o.SalesOrderId, o.OrderDate, o.SubTotal, d.OrderQty, d.ProductId, d.LineTotal)\r\n }\r\n\r\nWhat is SSDT?\r\nSQL Server Data Tools (SSDT) is a modern development tool for building SQL Server relational databases, databases in Azure SQL,\r\nAnalysis Services (AS) data models, Integration Services (IS) packages, and Reporting Services (RS) reports.\r\nIt allows you to quickly compare and synchronize schema changes between your SQL Server database and the current state of your .sql scripts in source control.\r\nSchemas can be synchronized bi-directionally (SSDT -\u0026gt; SQL Server or SQL Server -\u0026gt; SSDT).\r\nAdvantages of using the SSDT provider\r\nThe main advantage of using the SSDT provider is that it does not require a live connection to the database.\r\nThis makes running on a build server easier without manually spinning up a database instance.\r\nAnother advantage is that since your SSDT scripts are checked into your source control, you can easily have different schemas in each branch so that each branch can compile according to its local schema snapshot.\r\nHow to create an SSDT Project\r\nSSDT Projects can be created in two ways:\r\n* Visual Studio SSDT\r\n* Azure Data Studio via the SQL Database Projects Extension\r\nKnown Issues\r\nTables\r\n\r\nUser-defined data types are not yet supported\r\nComputed table columns will default to a data type of System.Object since the data type is not listed in the .dacpac file. (See Type Annotations below.)\r\n\r\nViews\r\n\r\nComputed view columns will default to a data type of System.Object since the data type is not listed in the .dacpac file. (See Type Annotations below.)\r\n\r\nType Annotations\r\nAs a workaround for computed table and view columns having unresolved data types, the SSDT provider allows you to add type annotations directly to the table or view as in-line comments.\r\nIn the SalesOrderDetail.sql example table below, [LineTotal] is a computed column. Since the .dacpac file cannot determine the datatype for computed columns, the data type of the generated property will be defaulted to obj.\r\nAs a workaround, an in-line type annotation /* MONEY NOT NULL /* can be added.\r\nNOTE: for computed table columns, the comment annotation must be contained within the parentheses.\r\nCREATE TABLE [SalesLT].[SalesOrderDetail] (\r\n[SalesOrderID] INT NOT NULL,\r\n[SalesOrderDetailID] INT IDENTITY (1, 1) NOT NULL,\r\n[OrderQty] SMALLINT NOT NULL,\r\n[ProductID] INT NOT NULL,\r\n[UnitPrice] MONEY NOT NULL,\r\n[UnitPriceDiscount] MONEY CONSTRAINT [DF_SalesOrderDetail_UnitPriceDiscount] DEFAULT ((0.0)) NOT NULL,\r\n[LineTotal] AS (isnull(([UnitPrice]*((1.0)-[UnitPriceDiscount]))*[OrderQty],(0.0)) /* MONEY NOT NULL */ ),\r\n[rowguid] UNIQUEIDENTIFIER CONSTRAINT [DF_SalesOrderDetail_rowguid] DEFAULT (newid()) ROWGUIDCOL NOT NULL,\r\n[ModifiedDate] DATETIME CONSTRAINT [DF_SalesOrderDetail_ModifiedDate] DEFAULT (getdate()) NOT NULL,\r\n...\r\n\r\nIn the example dbo.v_Hours view below, the Hours column is not linked back to the dbo.TimeEntries.Hours column in the .dacpac metadata because it is a calculated field, so the data type of the generated property will be defaulted to obj.\r\nAdding a type annotation within an in-line comment will inform the SSDT provider of the data type to use in the generated Hours property:\r\nCREATE VIEW dbo.v_Hours\r\nAS\r\nSELECT dbo.Projects.Name AS ProjectName, COALESCE (dbo.TimeEntries.Hours, 0) AS Hours /* decimal not null */, dbo.Users.Username\r\nFROM dbo.Projects\r\nINNER JOIN dbo.TimeEntries on dbo.Projects.Id = dbo.TimeEntries.ProjectId\r\nINNER JOIN dbo.Users on dboUsers.Id = dbo.TimeEntries.UserId\r\n\r\nNotes:\r\n\r\nIf no null constraint is added after the column type, nulls will be allowed by default.\r\nThe annotations are case-insensitive.\r\nHovering over a generated view property will designate if the data type was derived from a type annotation (or if it needs one).\r\nDo not include length information in the type annotation. For example, use varchar, not varchar(20).\r\n\r\nFunctions\r\n\r\nFunctions are not yet implemented\r\n\r\nIndividuals\r\n\r\nGet \u0022Individuals\u0022 feature is not implemented (because it requires a database connection)\r\n\r\n","headings":["MSSQL SSDT Provider","Parameters","DatabaseVendor (required)","SsdtPath (required)","Notes:","Example of the minimal required options for the SSDT provider:","Reloading the schema","Optional Parameters","UseOptionTypes","Table Names Filter","AdventureWorks Example","What is SSDT?","Advantages of using the SSDT provider","How to create an SSDT Project","Known Issues","Tables","Views","Type Annotations","Notes:","Functions","Individuals"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/mysql.html","title":"MySQL Provider\r\n","content":"MySQL Provider\r\nParameters\r\nConnectionString\r\nA basic connection string used to connect to MySQL instance; typical connection\r\nstring parameters apply here. See\r\nMySQL Connector/NET Connection Strings Documentation\r\nfor a complete list of connection string options.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet connString = \u0026quot;Server=localhost;Database=HR;User=root;Password=password\u0026quot;\r\n\r\nTo deal with some MySQL data connection problems, you might want to add some more parameters to connectionstring:\r\nAuto Enlist=false; Convert Zero Datetime=true;\r\nConnectionStringName\r\nInstead of storing the connection string in the source code, you\r\ncan store it in the App.config file. This is the name of the\r\nconnectionString key/value pair stored in App.config (TODO: confirm filename).\r\n// found in App.config (TODO: confirm)\r\nlet connexStringName = \u0026quot;DefaultConnectionString\u0026quot;\r\n\r\nDatabase Vendor\r\nUse MYSQL from the FSharp.Data.Sql.Common.DatabaseProviderTypes enumeration.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet dbVendor = Common.DatabaseProviderTypes.MYSQL\r\n\r\nResolution Path\r\nPath to search for assemblies containing database vendor-specific connections and custom types. Type the path where\r\nMysql.Data.dll is stored. Both absolute and relative paths are supported.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet resPath = __SOURCE_DIRECTORY__ \u002B @\u0026quot;/../../../packages/tests/MySql.Data/lib/net45\u0026quot;\r\n\r\nIndividuals Amount\r\nSets the count of records to load for each table. See individuals for further info.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet indivAmount = 1000\r\n\r\nUse Option Types\r\nIf true, F# option types will be used in place of nullable database columns. If false, you will always receive the default value of the column\u0027s type even if it is null in the database.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet useOptTypes = FSharp.Data.Sql.Common.NullableColumnType.OPTION\r\n\r\nExample\r\ntype sql = SqlDataProvider\u0026lt;\r\n dbVendor,\r\n connString,\r\n ResolutionPath = resPath,\r\n IndividualsAmount = indivAmount,\r\n UseOptionTypes = useOptTypes,\r\n Owner = \u0026quot;HR\u0026quot;\r\n \u0026gt;\r\nlet ctx = sql.GetDataContext()\r\n\r\nlet employees = \r\n ctx.Hr.Employees \r\n |\u0026gt; Seq.map (fun e -\u0026gt; e.ColumnValues |\u0026gt; Seq.toList)\r\n |\u0026gt; Seq.toList\r\n\r\nWorking with Type-mappings\r\nBasic types\r\nMySql.Data types are not always the ones you have used to in .NET, so here is a little help:\r\nlet myEmp = \r\n query {\r\n for jh in ctx.Hr.JobHistory do\r\n where (jh.Years \u0026gt; 10u)\r\n select (jh)\r\n } |\u0026gt; Seq.head\r\n\r\nlet myUint32 = 10u\r\nlet myInt64 = 10L\r\nlet myUInt64 = 10UL\r\n\r\nSystem.Guid Serialization\r\nIf you use a string column to save a Guid to the database, you may want to skip the hyphens (\u0022-\u0022)\r\nwhen serializing them:\r\nlet myGuid = System.Guid.NewGuid() //e.g. b8fa7880-ce44-4315-8d60-a160e5734c4b\r\n\r\nlet myGuidAsString = myGuid.ToString(\u0026quot;N\u0026quot;) // e.g. \u0026quot;b8fa7880ce4443158d60a160e5734c4b\u0026quot;\r\n\r\nThe problem with this is that you should never forget to use \u0022N\u0022 anywhere.\r\nSystem.DateTime Serialization\r\nAnother problem with MySql.Data is that DateTime conversions may fail if your culture is\r\nnot the expected one.\r\nSo you may have to convert datetimes as strings instead of using just myEmp.BirthDate \u0026lt;- DateTime.UtcNow:\r\nmyEmp.SetColumn(\u0026quot;BirthDate\u0026quot;, DateTime.UtcNow.ToString(\u0026quot;yyyy-MM-dd HH\\:mm\\:ss\u0026quot;) |\u0026gt; box)\r\n\r\nNotice that if you use .ToString(\u0022s\u0022), there will be \u0022T\u0022 between date and time: \u0022yyyy-MM-ddTHH\\:mm\\:ss\u0022.\r\nAnd comparing two datetimes as strings with \u0022T\u0022 and without \u0022T\u0022 will generate a problem with the time-part.\r\nIf your DateTime columns are strings in the database, you can use DateTime.Parse in your where-queries:\r\nlet longAgoeTime.UtcNow.AddYears(-5)\r\nlet myEmp = \r\n query {\r\n for emp in ctx.Hr.Employees do\r\n where (DateTime.Parse(emp.HireDate) \u0026gt; longAgo)\r\n select (emp)\r\n } |\u0026gt; Seq.head\r\n\r\nYou should be fine even with canonical functions like DateTime.Parse(a.MeetStartTime).AddMinutes(10.).\r\nCaveats / Additional Info\r\nCheck General, Static Parameters and Querying documentation.\r\nSupport for MySqlConnector\r\nMySqlConnector is an alternative driver to use instead of MySql.Data.dll.\r\nIt has fewer features but a lot better performance than the official driver.\r\nYou can use it with SQLProvider:\r\nJust remove MySql.Data.dll from your resolutionPath and insert there MySqlConnector.dll instead. (Get the latest from NuGet.)\r\nIt uses references to System.Buffers.dll, System.Runtime.InteropServices.RuntimeInformation.dll and System.Threading.Tasks.Extensions.dll,\r\nso copy those files also to your referencePath. You can get them from corresponding NuGet packages.\r\nIf you want to use the drivers in parallel, you need two resolution paths:\r\ntype HRFast = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.MYSQL, connString, ResolutionPath = @\u0026quot;c:\\mysqlConnectorPath\u0026quot;, Owner = \u0026quot;HR\u0026quot;\u0026gt;\r\ntype HRProcs = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.MYSQL, connString, ResolutionPath = @\u0026quot;creferencesOwner = \u0026quot;HR\u0026quot;\u0026gt;\r\n\r\n(**\r\n\r\n### Example performance difference from our unit tests\r\n\r\nOne complex query:\r\n\r\n\u0060\u0060\u0060 \r\nMySql.Data.dll: Real: 00:00:00.583, C0:00:00.484, GC gen0: 1, gen1: 0, gen2: 0\r\nMySqlConnector.dll: Real: 00:00:00.173, CPU: 00:00:00.093, GC gen0: 1, gen1: 0, gen2: 0\r\n\u0060\u0060\u0060\r\n\r\nLots of async queries:\r\n\r\n\u0060\u0060\u0060\r\nMySQL.Data.dll Real: 00:00:01.425, CPU: 00:00:02.078, GC gen0: 16, gen1: 1, gen2: 0\r\nMySqlConnector.dll: Real: 00:00:01.091, CPU: 00:00:02.000, GC gen0: 14, gen1: 1, gen2: 0\r\n\u0060\u0060\u0060\r\n\r\n*)\r\n\r\n","headings":["MySQL Provider","Parameters","ConnectionString","ConnectionStringName","Database Vendor","Resolution Path","Individuals Amount","Use Option Types","Example","Working with Type-mappings","Basic types","System.Guid Serialization","System.DateTime Serialization","Caveats / Additional Info","Support for MySqlConnector"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/netstandard.html","title":".NET Standard / .NET Core support\r\n","content":".NET Standard / .NET Core support\r\nThis is very initial / experimental, from version 1.1.18.\r\nInstall e.g. with: dotnet add package SQLProvider --version 1.1.18\r\nYou will need some configuration for your project files; see the examples.\r\n- You need a path to fsc.\r\n- You need your database driver and dependency dlls to resolutionPath-folder.\r\nCore / NetStandard:\r\n | Win10 | Mac | Ubuntu (needs sudo) | Comments | \r\nMicrosoft SQL Server | [x] | [x] | [x] | See prebuild task. |\r\nPostgres | [x] | [x] | [x] | See post-build task. |\r\nMySQL / MariaDB | [x] | [x] | [x] | See post-build task. |\r\nSQLite | [x] | | | See post-build task. Builds on Win, runs on all |\r\nFireBird | ? | ? | ? | Not tested. |\r\nOracle | | | | No ODP.NET-driver yet. |\r\nOdbc | | | | Not supported. |\r\nAccess | | | | Not supported. |\r\n\r\n.NET 4.5.1 / Mono: All should work.\r\n\r\nExample projects\r\nThere are some example .NET-Coreapp 2.0 projects at: tests\\SqlProvider.Core.Tests\r\nThere is a build.cmd which runs as follows:\r\ndotnet restore\r\ndotnet build\r\ndotnet run\r\n\r\nLimitations\r\nYou need your database connection driver to also support .NET Core.\r\nIf your database connection driver has external dependencies, they have to be also present\r\n(e.g. a project prebuild-task to move them to the resolution path).\r\nThe connection string can be passed as a hard-coded static parameter (development) or GetDataContext(connectionstring) parameter on runtime, but fetching it automatically from the application configuration is not supported.\r\nThe target frameworks are defined in the project file: \u0026lt;TargetFrameworks\u0026gt;net461;netcoreapp2.0;netstandard2.0\u0026lt;/TargetFrameworks\u0026gt;\r\nCorresponding files go to root bin paths, e.g.: \\bin\\netstandard2.0\r\nMicrosoft Sql Server\r\nIf you plan to run Microsoft SQL Server, you need a dependency on System.Data.SqlClient and a post-build task to\r\ncopy the correct dll under System.Data.SqlClient\\runtimes\\...\\ to your execution folder.\r\nMySql\r\nMySQL is using MySQLConnector.\r\nThe alternative is to use the provided custom build of MySQL.Data.dll (6.10-rc) compiled from sources to .Net Standard 2.0.\r\nAs the official MySQL.Data.dll does not support .NET Standard 2.0. See: https://bugs.mysql.com/bug.php?id=88016\r\nSQLite\r\nSQLite is using Microsoft.Data.Sqlite library, which has a dependency on non-managed e_sqlite3.dll.\r\nEnsure that the correct platform-specific file is found in referencePath or the PATH environment variable.\r\nDue to the lack of Mono-support in Microsoft.Data.SQLite and Core-support in System.Data.SQLite, there is no\r\ncommon driver that could work on both environments. That\u0027s why build is not possible with Mac/Ubuntu.\r\nMicrosoft.Data.Sqlite.Core.Backport could work, but it has not been tested.\r\nNon-Windows environment (Mac / Ubuntu / Linux / ...)\r\nOn Windows, you can reference .NET Standard 2.0 dlls in FSharp interactive, but in Osx or Linux, you cannot, as Mono is not .NET Standard 2.0 compatible.\r\nNon-Windows typeprovider will call Mono on compile-time. Mono will use .Net 4.5.1 libraries.\r\nTypeprovider handles that on compilation, and after compiling, your assembly will be .NET Core compatible.\r\nHowever, your compilation resolutionPath reference assemblies have to be in the .Net 4.5.1 version, and your build folder\r\nhas to have core references, e.g., via PackageReferences.\r\nOn Ubuntu, you probably have to use sudo for both dotnet restore and dotnet build.\r\nIf you forgot the sudo, try to remove the bin and obj folders and then rerun the restore.\r\nSome Technical Details\r\n.NET Standard solution is located at /src/SQLProvider.Standard/SQLProvider.Standard.fsproj\r\nThe following files are needed to the NuGet package, from the .NET Standard SDK:\r\nnetstandard.dll, System.Console.dll, System.IO.dll, System.Reflection.dll, System.Runtime.dll\r\nYou can find net461 versions of them by default from (e.g. 2.0.0, can be also something else like 2.0.2):\r\nWin: C:\\Program Files\\dotnet\\sdk\\2.0.0\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\\r\nOthers: /usr/local/share/dotnet/sdk/2.0.0/Microsoft/Microsoft.NET.Build.Extensions/net461/lib\r\nand also System.Data.SqlClient.dll from that NuGet package.\r\nThe NuGet cache is located at:\r\nWin: C:\\Users\\(your-user-name)\\.nuget\\packages\\SQLProvider\\\r\nOthers: ~/.nuget/packages/SQLProvider/\r\n","headings":[".NET Standard / .NET Core support","Example projects","Limitations","Microsoft Sql Server","MySql","SQLite","Non-Windows environment (Mac / Ubuntu / Linux / ...)","Some Technical Details"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/odbc.html","title":"ODBC\r\n","content":"ODBC\r\nDSN\r\nConfiguring DSN on Windows ODBC Data Source Administrator server:\r\nControl Panel -\u0026gt; Administrative Tools -\u0026gt; Data Sources (ODBC)\r\n(or launch: c:\\windows\\syswow64\\odbcad32.exe)\r\nand add your driver to DSN.\r\nopen FSharp.Data.Sql \r\n[\u0026lt;Literal\u0026gt;] \r\nlet dnsConn = @\u0026quot;DSN=foo\u0026quot; \r\ntype db = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.ODBC, dnsConn\u0026gt;\r\nlet ctx = db.GetDataContext()\r\n\r\nYou don\u0027t need DSN for all data sources, e.g. MS Access can be used directly\r\nthrough the database file with a connection string like:\r\n@\u0022Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\\Northwind.mdb\u0022\r\nQuote Character\r\nBecause there are a lot of different kind of ODBC connection types, you can set\r\nquote characters for SQL-clauses with optional parameter OdbcQuote.\r\n\r\nOdbcQuoteCharacter.SQUARE_BRACKETS\r\nOdbcQuoteCharacter.GRAVE_ACCENT\r\nOdbcQuoteCharacter.NO_QUOTES\r\nOdbcQuoteCharacter.DOUBLE_QUOTES\r\nOdbcQuoteCharacter.APHOSTROPHE\r\n\r\nand the difference in executed SQL is:\r\nSELECT [CourseID], [CourseName] FROM [Course] as [q] \r\nSELECT \u0060CourseID\u0060, \u0060CourseName\u0060 FROM \u0060Course\u0060 as \u0060q\u0060 \r\nSELECT CourseID , CourseName FROM Course as q \r\nSELECT \u0022CourseID\u0022, \u0022CourseName\u0022 FROM \u0022Course\u0022 as \u0022q\u0022\r\nSELECT \u0027CourseID\u0027, \u0027CourseName\u0027 FROM \u0027Course\u0027 as \u0027q\u0027\r\n\r\n[\u0026lt;Literal\u0026gt;] \r\nlet quotechar = FSharp.Data.Sql.Common.OdbcQuoteCharacter.DEFAULT_QUOTE\r\ntype db2 = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.ODBC, dnsConn, OdbcQuote = quotechar\u0026gt;\r\nlet ctx2 = db2.GetDataContext()\r\n\r\nDTC Transactions\r\nSQLProvider will do DTC-transactions over CRUD-operations. That will ensure\r\nthat all the database operations will either succeed or fail at once; when you do\r\nctx.SubmitUpdates().\r\nHowever, some ODBC-drivers (like MS-Access) don\u0027t support\r\nDTC-transactions and will fail on the constructor call. The transaction creation can be\r\ndisabled in context creation:\r\nlet ctx3 = \r\n db.GetDataContext(\r\n { Timeout = TimeSpan.MaxValue; \r\n IsolationLevel = Transactions.IsolationLevel.DontCreateTransaction\r\n }:FSharp.Data.Sql.Transactions.TransactionOptions)\r\n\r\nDon\u0027t disable transactions if you don\u0027t need to.\r\n","headings":["ODBC","DSN","Quote Character","DTC Transactions"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/oracle.html","title":"SQL Provider for Oracle\r\n","content":"SQL Provider for Oracle\r\nOracle is based on the current release (12.1.0.1.2) of the managed ODP.NET driver found here. However, although the managed version is recommended, it should also work with previous versions of the native driver.\r\n#r \u0026quot;FSharp.Data.SqlProvider.dll\u0026quot;\r\n\r\nopen FSharp.Data.Sql\r\n\r\ntype sql = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.ORACLE, connectionString, ResolutionPath = resolutionPath\u0026gt;\r\nlet ctx = sql.GetDataContext()\r\n\r\nlet customers = ctx.Customers |\u0026gt; Seq.toArray\r\n\r\nBecause Oracle databases can be massive, an optional constructor parameter, TableNames, can be used as a filter.\r\n","headings":["SQL Provider for Oracle"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/outline.html","title":"SQL Type Provider\r\n","content":"SQL Type Provider\r\nProject Home\r\nNOTE: test code examples, tool-tip capability in projectscaffold\r\nFeatures \u0026amp; Capabilities:\r\n* erasing\r\n* doesn\u0027t generate code; more lightweight\r\n* feeble\r\n* individuals - things set as static values (such as configuration) can be set,\r\nso exceptions can be thrown if data does not match the expected\r\nOutline of Docs\r\n\r\n\r\nOverview\r\n\r\nmore like ORM\r\nAll mutating queries are transactional\r\nsupports identity columns\r\n\r\n\r\n\r\nBasic Setup / Configuration\r\n\r\n\r\nSpecial Cases:\r\n\r\nSpecial case for Oracle\r\n\r\nSQLite\r\n\r\nMixed-mode assembly\r\nSpecial version\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nBasic Queries\r\n\r\n\r\nCaveats:\r\n\r\nPrimary key required for update, delete\r\n\r\nRelationships aren\u0027t \u0022intelligent\u0022 - have to create parent-child \r\nmanually\r\n\r\n\r\n\r\n\r\n\r\n\r\nCustom Operators\r\n\r\nIN finds one match in a set\r\n\r\nNote for slow querying: Using queries isn\u0027t required, not using the \r\nqueries will select all rows from the table\r\n\r\n(look up info on !! operator for joins)\r\n\r\n\r\n\r\nLINQ support\r\n\r\nfeatures aren\u0027t the same as the MS SQL to LINQ Provider\r\n\r\nMS version uses sqlmetal, leveraging LINQ2SQL - this one does not as \r\nit only supports a few of the query CE keywords\r\n\r\n\r\n\r\n\r\nStored Procedures\r\n\r\n\r\nRoss McKinley\u0027s Blog entry on CRUD and SP\u0027s note check against library for accuracy\r\n\r\nLevel of support varies based on DB type\r\n\r\n\r\n\r\n\r\n\r\nDatabase-Specific\r\n\r\nMSSQL\r\nOracle\r\nSQLite\r\nPostgreSQL\r\nMySQL\r\nODBC experimental (only supports SELECT \u0026amp; WHERE)\r\n\r\n\r\n\r\nTODO\r\nItems mentioned in the documentation, however, need further documentation:\r\n* static parameters in creating static type alias\r\n* querying.fsx\r\n* constraints-relationships.fsx\r\n","headings":["SQL Type Provider","Outline of Docs","TODO"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/parameters.html","title":"SQL Provider Static Parameters\r\n","content":"SQL Provider Static Parameters\r\nGlobal parameters\r\nThese are the \u0022common\u0022 parameters used by all SqlProviders.\r\nAll static parameters must be known at compile time. For strings, this can be\r\nachieved by adding the [\u0026lt;Literal\u0026gt;] attribute if you are not passing it inline.\r\nConnectionString\r\nThis is the connection string commonly used to connect to a database server\r\ninstance. Please review the documentation on your desired database type to learn\r\nmore.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet sqliteConnectionString =\r\n \u0026quot;Data Source=\u0026quot; \u002B __SOURCE_DIRECTORY__ \u002B @\u0026quot;\\northwindEF.db;Version=3\u0026quot;\r\n\r\nConnectionStringName\r\nInstead of storing the connection string in the source code / fsx script, you\r\ncan store values in the App.config file:\r\n\u0026lt;connectionStrings\u0026gt; \r\n \u0026lt;add name=\u0022MyConnectionString\u0022 \r\n providerName=\u0022System.Data.ProviderName\u0022 \r\n connectionString=\u0022Valid Connection String;\u0022 /\u0026gt; \r\n\u0026lt;/connectionStrings\u0026gt;\r\n\r\nAnother usually easier option is to give a runtime connection string as a parameter for the .GetDataContext(...) method.\r\nIn your source file:\r\nlet connexStringName = \u0026quot;MyConnectionString\u0026quot;\r\n\r\nDatabaseVendor\r\nSelect enumeration from Common.DatabaseProviderTypes to specify which database\r\ntype the provider will be connecting to.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet dbVendor = Common.DatabaseProviderTypes.SQLITE\r\n\r\nResolutionPath\r\nA third-party driver is required when using database vendors other than SQL Server, Access and ODBC.\r\nThis parameter should point to an absolute or relative directory where the\r\nrelevant assemblies are located. Please review at the database vendor-specific page for more details.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet resolutionPath =\r\n __SOURCE_DIRECTORY__ \u002B @\u0026quot;..\\..\\..\\files\\sqlite\u0026quot;\r\n\r\nThe resolution path(s) (as can be semicolon separated if any) should point to the\r\ndatabase driver files and their reference assemblies) that work on design-time.\r\nSo, depending on your IDE, you probably want there .NET Standard 2.0 (or 2.1) versions\r\nand not the latest .NET runtime, even when you\u0027d target your final product to the latest .NET.\r\nNote on .NET 5 PublishSingleFile and ResolutionPath\r\nIf you are publishing your app using .NET 5\u0027s PublishSingleFile mode, the driver will\r\nbe loaded from the bundle itself rather than from a separate file on the drive.\r\nThe ResolutionPath parameter will not work for the published app, nor will the automatic\r\nassembly resolution implemented within SQLProvider.\r\nSQLProvider attempts to load the assembly from the AppDomain in such a case. This means\r\nthat your driver\u0027s assembly must be loaded by your application for SQLProvider to find\r\nit. To do so, use the types of your driver before calling the .GetDataContext(...)\r\nmethod, such as in this example, using MySqlConnector. The specific type you refer\r\nto does not matter.\r\ntypeof\u0026lt;MySqlConnector.Logging.MySqlConnectorLogLevel\u0026gt;.Assembly |\u0026gt; ignore\r\nlet ctx = sqlType.GetDataContext()\r\n\r\nIndividualsAmount\r\nNumber of instances to retrieve using the individuals feature.\r\nDefault is 1000.\r\nlet indivAmt = 500\r\n\r\nUseOptionTypes\r\nIf set to FSharp.Data.Sql.Common.NullableColumnType.OPTION, all nullable fields will be represented by F# option types. If NO_OPTION, nullable\r\nfields will be represented by the default value of the column type - this is important because\r\nthe provider will return 0 instead of null, which might cause problems in some scenarios.\r\nThe third option is VALUE_OPTION, where nullable fields are represented by ValueOption struct.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet useOptionTypes = FSharp.Data.Sql.Common.NullableColumnType.OPTION\r\n\r\nContextSchemaPath\r\nDefining ContextSchemaPath and placing a file with schema information according to the definition\r\nenables offline mode that can be useful when the database is unavailable or slow to connect or access.\r\nSchema information file can be generated by calling design-time method SaveContextSchema under Design Time Commands:\r\nctx.\u0060\u0060Design Time Commands\u0060\u0060.SaveContextSchema\r\n\r\nThis method doesn\u0027t affect runtime execution. Since SQLProvider loads schema information lazily,\r\ncalling SaveContextSchema only saves the portion of the database schema sufficient to compile\r\nqueries referenced in the scope of the current solution or script. Therefore, it is recommended that\r\nit be executed after the successful build of the whole solution. Type the method name with parentheses. If you then\r\ntype a dot (.), you should see a tooltip with information about when the schema was last saved. Once the schema\r\nis saved, the outcome of the method execution is stored in memory so the file will not be overwritten.\r\nIn case the database schema changes and the schema file must be updated, remove the outdated file, reload\r\nthe solution and retype or uncomment a call to SaveContextSchema to regenerate the schema file.\r\nThere is a tool method FSharp.Data.Sql.Common.OfflineTools.mergeCacheFiles to merge multiple files together.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet contextSchemaPath =\r\n __SOURCE_DIRECTORY__ \u002B @\u0026quot;.\\sqlite.schema\u0026quot;\r\n\r\nPlatform Considerations\r\nMSSQL\r\nTableNames to filter the amount of tables.\r\nOracle\r\nTableNames to filter the number of tables and an Owner.\r\nOwner (Used by Oracle, MySQL and PostgreSQL)\r\nThis has different meanings when running queries against different database vendors.\r\nFor PostgreSQL, this sets the schema name to which the target tables belong. It can also be a list separated by spaces, newlines, commas or semicolons.\r\nFor MySQL, this sets the database name (Or schema name, which is the same thing for MySQL). It can also be a list separated by spaces, newlines, commas or semicolons.\r\nFor Oracle, this sets the owner of the scheme.\r\nSQLite\r\nThe additional SQLiteLibrary parameter can be used to specify\r\nwhich SQLite library to load.\r\nPostgreSQL\r\nThere are no extra parameters.\r\nMySQL\r\nThere are no extra parameters.\r\nODBC\r\nThere are no extra parameters.\r\nExample\r\nIt is recommended to use named static parameters in your type provider definition so\r\ntype sql = SqlDataProvider\u0026lt;\r\n ConnectionString = sqliteConnectionString,\r\n DatabaseVendor = dbVendor,\r\n ResolutionPath = resolutionPath,\r\n UseOptionTypes = useOptionTypes\r\n \u0026gt;\r\n\r\nSQL Provider Data Context Parameters\r\nBesides the static parameters the .GetDataContext(...) method has optional parameters:\r\n\r\nconnectionString - The database connection string on runtime.\r\nresolutionPath - The location to look for dynamically loaded assemblies containing database vendor-specific connections and custom types\r\ntransactionOptions - TransactionOptions for the transaction created on SubmitChanges.\r\ncommandTimeout - SQL command timeout. Maximum time for single SQL-command in seconds.\r\nselectOperations - Execute select-clause operations in SQL database rather than .NET-side.\r\n\r\n","headings":["SQL Provider Static Parameters","Global parameters","ConnectionString","ConnectionStringName","DatabaseVendor","ResolutionPath","Note on .NET 5 PublishSingleFile and ResolutionPath","IndividualsAmount","UseOptionTypes","ContextSchemaPath","Platform Considerations","MSSQL","Oracle","Owner (Used by Oracle, MySQL and PostgreSQL)","SQLite","PostgreSQL","MySQL","ODBC","Example","SQL Provider Data Context Parameters"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/postgresql.html","title":"PostgreSQL Provider\r\n","content":"PostgreSQL Provider\r\nParameters\r\nDatabaseVendor\r\nFrom the FSharp.Data.Sql.Common.DatabaseProviderTypes enumeration. For PostgreSQL,\r\nuse Common.DatabaseProviderTypes.POSTGRESQL.\r\nlet [\u0026lt;Literal\u0026gt;] dbVendor = Common.DatabaseProviderTypes.POSTGRESQL\r\n\r\nConnectionString\r\nA basic connection string used to connect to PostgreSQL instance; typical\r\nconnection strings for the driver apply here. See\r\nPostgreSQL Connecting Strings Documentation\r\nfor a complete list of connection string options.\r\nlet [\u0026lt;Literal\u0026gt;] connString = \u0026quot;Host=localhost;Database=test;Username=test;Password=test\u0026quot;\r\n\r\nConnectionStringName\r\nInstead of storing the connection string in the source code / fsx script, you\r\ncan store values in the App.config file. This is the name of the\r\nconnectionString key/value pair stored in App.config (TODO: confirm file name).\r\n// found in App.config (TOOD: confirm)\r\nlet [\u0026lt;Literal\u0026gt;] connexStringName = \u0026quot;DefaultConnectionString\u0026quot;\r\n\r\nResolution Path\r\nPath to search for assemblies containing database vendor-specific connections\r\nand custom types. Type the path where Npgsql.Data.dll is stored.\r\nlet [\u0026lt;Literal\u0026gt;] resPath = @\u0026quot;C:\\Projects\\Libs\\Npgsql\u0026quot;\r\n\r\nIndividualsAmount\r\nSets the count to load for each individual. See individuals\r\nfor further info.\r\nlet [\u0026lt;Literal\u0026gt;] indivAmount = 1000\r\n\r\nUseOptionTypes\r\nIf true, F# option types will be used in place of nullable database columns.\r\nIf false, you will always receive the default value of the column\u0027s type, even\r\nif it is null in the database.\r\nlet [\u0026lt;Literal\u0026gt;] useOptTypes = true\r\n\r\nOwner\r\nIndicates the schema or schemas to which SqlProvider will try to provide access to.\r\nMultiple schemas can be indicated and separated by commas or semicolons.\r\nDefaults to \u0022public\u0022.\r\nlet [\u0026lt;Literal\u0026gt;] owner = \u0026quot;public, admin, references\u0026quot;\r\n\r\n\r\ntype sql =\r\n SqlDataProvider\u0026lt;\r\n dbVendor,\r\n connString,\r\n \u0026quot;\u0026quot;, //ConnectionNameString can be left empty \r\n resPath,\r\n indivAmount,\r\n useOptTypes,\r\n owner\u0026gt;\r\n\r\n","headings":["PostgreSQL Provider","Parameters","DatabaseVendor","ConnectionString","ConnectionStringName","Resolution Path","IndividualsAmount","UseOptionTypes","Owner"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/programmability.html","title":"Programmability\r\n","content":"Programmability\r\ntype AdventureWorks = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.MSSQLSERVER, connStr\u0026gt;\r\nlet ctx = AdventureWorks.GetDataContext()\r\n\r\nQuerying views is just like querying tables. But executing a stored procedure or a function is a bit different:\r\nExecute a function in the Adventure Works database\r\nctx.Functions.UfnGetSalesOrderStatusText.Invoke(0uy)\r\n\r\nExecute a stored procedure in the Adventure Works database\r\nctx.Procedures.UspLogError.Invoke(1)\r\n\r\nExample of executing a procedure with async and reading the results:\r\nlet uspGetManagerEmployees =\r\n async {\r\n let! res = ctx.Procedures.UspGetManagerEmployees.InvokeAsync 2\r\n let mapped = res.ResultSet |\u0026gt; Array.map(fun i -\u0026gt; i.ColumnValues |\u0026gt; Map.ofSeq)\r\n mapped |\u0026gt; Array.iter(fun i -\u0026gt; \r\n printfn \u0026quot;Name: %O, Level: %O\u0026quot; i.[\u0026quot;FirstName\u0026quot;] i.[\u0026quot;RecursionLevel\u0026quot;]\r\n )\r\n } |\u0026gt; Async.StartAsTask\r\n\r\n // Name: Roberto, Level: 1\r\n // Name: Rob, Level: 2\r\n // Name: Gail, Level: 2\r\n // ...\r\n\r\n","headings":["Programmability"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/querying.html","title":"Querying\r\n","content":"How to see the SQL-clause?\r\nTo display / debug your SQL-clauses you can add a listener for your logging framework to SqlQueryEvent:\r\nFSharp.Data.Sql.Common.QueryEvents.SqlQueryEvent |\u0026gt; Event.add (printfn \u0026quot;Executing SQL: %O\u0026quot;)\r\n\r\nThe event has separate fields of Command and Parameters\r\nfor you to store your clauses with a strongly typed logging system like Logary.\r\nQuerying\r\ntype sql = SqlDataProvider\u0026lt;\r\n Common.DatabaseProviderTypes.SQLITE,\r\n connectionString,\r\n SQLiteLibrary=Common.SQLiteLibrary.SystemDataSQLite,\r\n ResolutionPath = resolutionPath,\r\n CaseSensitivityChange = Common.CaseSensitivityChange.ORIGINAL\r\n \u0026gt;\r\nlet ctx = sql.GetDataContext()\r\n\r\nSQLProvider leverages F#\u0027s query {} expression syntax to perform queries\r\nagainst the database. Though many are supported, not all LINQ expressions are.\r\nlet example =\r\n query {\r\n for order in ctx.Main.Orders do\r\n where (order.Freight \u0026gt; 0m)\r\n sortBy (order.ShipPostalCode)\r\n skip 3\r\n take 4\r\n select (order)\r\n }\r\n\r\nlet test = example |\u0026gt; Seq.toArray |\u0026gt; Array.map(fun i -\u0026gt; i.ColumnValues |\u0026gt; Map.ofSeq)\r\n\r\nlet item =\r\n query {\r\n for order in ctx.Main.Orders do\r\n where (order.Freight \u0026gt; 0m)\r\n head\r\n }\r\n\r\nOr async versions:\r\nlet exampleAsync =\r\n task {\r\n let! res =\r\n query {\r\n for order in ctx.Main.Orders do\r\n where (order.Freight \u0026gt; 0m)\r\n select (order)\r\n } |\u0026gt; Seq.executeQueryAsync\r\n return res\r\n } \r\n\r\nlet itemAsync =\r\n task {\r\n let! item =\r\n query {\r\n for order in ctx.Main.Orders do\r\n where (order.Freight \u0026gt; 0m)\r\n } |\u0026gt; Seq.headAsync\r\n return item\r\n } \r\n\r\nIf you consider using asynchronous queries, read more from the async documentation.\r\nSELECT -clause operations\r\nYou can control the execution context of the select-operations by the GetDataContext parameter selectOperations.\r\nThe LINQ-query stays the same. You have two options: DotNetSide or DatabaseSide.\r\nThis might significantly affect the size of data transferred from the database.\r\nSelectOperations.DotNetSide (Default)\r\nFetch the columns and run operations on the .NET-side.\r\n let dc = sql.GetDataContext(SelectOperations.DotNetSide) // (same as without the parameter)\r\n query {\r\n for cust in dc.Main.Customers do\r\n select (if cust.Country = \u0026quot;UK\u0026quot; then (cust.City)\r\n else (\u0026quot;Outside UK\u0026quot;))\r\n } |\u0026gt; Seq.toArray\r\n\r\nSELECT \r\n [cust].[Country] as \u0027Country\u0027,\r\n [cust].[City] as \u0027City\u0027 \r\nFROM main.Customers as [cust]\r\n\r\nSelectOperations.DatabaseSide\r\nExecute the operations as part of SQL.\r\nlet dc = sql.GetDataContext(SelectOperations.DatabaseSide)\r\nlet qry = \r\n query {\r\n for cust in dc.Main.Customers do\r\n select (if cust.Country = \u0026quot;UK\u0026quot; then (cust.City)\r\n else (\u0026quot;Outside UK\u0026quot;))\r\n } |\u0026gt; Seq.toArray\r\n\r\nSELECT \r\n CASE WHEN ([cust].[Country] = @param1) THEN \r\n [cust].[City] \r\n ELSE @param2 \r\nEND as [result] \r\nFROM main.Customers as [cust]\r\n-- params @param1 - \u0022UK\u0022; @param2 - \u0022Outside UK\u0022\r\n\r\nIf your query is a sub-query (a part of a larger query), then the operations are always executed on DatabaseSide.\r\nSupported Query Expression Keywords\r\n\r\n\r\n\r\nKeyword\r\nSupported\r\nNotes\r\n\r\n\r\n\r\n\r\n.Contains()\r\nX\r\nopen System.Linq, in where, SQL IN-clause, nested query\r\n\r\n\r\n.Concat()\r\nX\r\nopen System.Linq, SQL UNION ALL-clause\r\n\r\n\r\n.Union()\r\nX\r\nopen System.Linq, SQL UNION-clause\r\n\r\n\r\nall\r\nX\r\n\r\n\r\n\r\naverageBy\r\nX\r\nSingle table (1)\r\n\r\n\r\naverageByNullable\r\nX\r\nSingle table (1)\r\n\r\n\r\ncontains\r\nX\r\n\r\n\r\n\r\ncount\r\nX\r\n\r\n\r\n\r\ndistinct\r\nX\r\n\r\n\r\n\r\nexactlyOne\r\nX\r\n\r\n\r\n\r\nexactlyOneOrDefault\r\nX\r\n\r\n\r\n\r\nexists\r\nX\r\n\r\n\r\n\r\nfind\r\nX\r\n\r\n\r\n\r\ngroupBy\r\nx\r\nSimple support (2)\r\n\r\n\r\ngroupJoin\r\n\r\n\r\n\r\n\r\ngroupValBy\r\n\r\n\r\n\r\n\r\nhead\r\nX\r\n\r\n\r\n\r\nheadOrDefault\r\nX\r\n\r\n\r\n\r\nif\r\nX\r\n\r\n\r\n\r\njoin\r\nX\r\n\r\n\r\n\r\nlast\r\n\r\n\r\n\r\n\r\nlastOrDefault\r\n\r\n\r\n\r\n\r\nleftOuterJoin\r\n\r\n\r\n\r\n\r\nlet\r\nx\r\n...but not using tmp variables in where-clauses\r\n\r\n\r\nmaxBy\r\nX\r\nSingle table (1)\r\n\r\n\r\nmaxByNullable\r\nX\r\nSingle table (1)\r\n\r\n\r\nminBy\r\nX\r\nSingle table (1)\r\n\r\n\r\nminByNullable\r\nX\r\nSingle table (1)\r\n\r\n\r\nnth\r\nX\r\n\r\n\r\n\r\nselect\r\nX\r\n\r\n\r\n\r\nskip\r\nX\r\n\r\n\r\n\r\nskipWhile\r\n\r\n\r\n\r\n\r\nsortBy\r\nX\r\n\r\n\r\n\r\nsortByDescending\r\nX\r\n\r\n\r\n\r\nsortByNullable\r\nX\r\n\r\n\r\n\r\nsortByNullableDescending\r\nX\r\n\r\n\r\n\r\nsumBy\r\nX\r\nSingle table (1)\r\n\r\n\r\nsumByNullable\r\nX\r\nSingle table (1)\r\n\r\n\r\ntake\r\nX\r\n\r\n\r\n\r\ntakeWhile\r\n\r\n\r\n\r\n\r\nthenBy\r\nX\r\n\r\n\r\n\r\nthenByDescending\r\nX\r\n\r\n\r\n\r\nthenByNullable\r\nX\r\n\r\n\r\n\r\nthenByNullableDescending\r\nX\r\n\r\n\r\n\r\nwhere\r\nx\r\nServer side variables must either be plain without .NET operations or use the supported canonical functions.\r\n\r\n\r\n\r\n\r\nCurrently SQL-provider doesn\u0027t generate nested queries in from-clauses, the query is flattened to a single select. Nested in-clauses in where-clauses are supported.\r\n(1) Single table: if you want multiple tables, use corresponding Seq query or async aggregates, like Seq.sumQuery or Seq.sumAsync.\r\n(2) Very simple groupBy (and having) is supported: Single table or max 3 table joins before groupBy, with direct aggregates like .Count() or direct parameter calls like .Sum(fun entity -\u0026gt; entity.UnitPrice), and max 7 key columns. No nested grouping.\r\nCanonical Functions\r\nBesides that, we support these .NET-functions to transfer the logics to SQL-clauses (starting from SQLProvider version 1.0.57).\r\nIf you use these, remember to check your database indexes.\r\n.NET String Functions (.NET)\r\n\r\n\r\n\r\n.NET\r\nMsSqlServer\r\nPostgreSql\r\nMySql\r\nOracle\r\nSQLite\r\nMSAccess\r\nOdbc\r\nNotes\r\n\r\n\r\n\r\n\r\n.Substring(x)\r\nSUBSTRING\r\nSUBSTRING\r\nMID\r\nSUBSTR\r\nSUBSTR\r\nMid\r\nSUBSTRING\r\nStart position may vary (0 or 1 based.)\r\n\r\n\r\n.ToUpper()\r\nUPPER\r\nUPPER\r\nUPPER\r\nUPPER\r\nUPPER\r\nUCase\r\nUCASE\r\n\r\n\r\n\r\n.ToLower()\r\nLOWER\r\nLOWER\r\nLOWER\r\nLOWER\r\nLOWER\r\nLCase\r\nLCASE\r\n\r\n\r\n\r\n.Trim()\r\nLTRIM(RTRIM)\r\nTRIM(BOTH...)\r\nTRIM\r\nTRIM\r\nTRIM\r\nTrim\r\nLTRIM(RTRIM)\r\n\r\n\r\n\r\n.Length()\r\nDATALENGTH\r\nCHAR_LENGTH\r\nCHAR_LENGTH\r\nLENGTH\r\nLENGTH\r\nLen\r\nCHARACTER_LENGTH\r\n\r\n\r\n\r\n.Replace(a,b)\r\nREPLACE\r\nREPLACE\r\nREPLACE\r\nREPLACE\r\nREPLACE\r\nReplace\r\nREPLACE\r\n\r\n\r\n\r\n.IndexOf(x)\r\nCHARINDEX\r\nSTRPOS\r\nLOCATE\r\nINSTR\r\nINSTR\r\nInStr\r\nLOCATE\r\n\r\n\r\n\r\n.IndexOf(x, i)\r\nCHARINDEX\r\n\r\nLOCATE\r\nINSTR\r\n\r\nInStr\r\nLOCATE\r\n\r\n\r\n\r\n(\u002B)\r\n\u002B\r\n||\r\nCONCAT\r\n||\r\n||\r\n\u0026amp;\r\nCONCAT\r\n\r\n\r\n\r\n\r\n\r\nIn where-clauses you can also use .Contains(\u0022...\u0022), .StartsWith(\u0022...\u0022) and .EndsWith(\u0022...\u0022), which are translated to\r\ncorresponding LIKE-clauses (e.g. StartsWith(\u0022abc\u0022) is LIKE (\u0027asdf%\u0027).\r\nSubstring(startpos,length) is supported. IndexOf with length parameter is supported except PostgreSql and SQLite.\r\nOperations do support parameters to be either constants or other SQL-columns (e.g. x.Substring(x.Length() - 1)).\r\n.NET DateTime Functions\r\n\r\n\r\n\r\n.NET\r\nMsSqlServer\r\nPostgreSql\r\nMySql\r\nOracle\r\nSQLite\r\nMSAccess\r\nOdbc\r\nNotes\r\n\r\n\r\n\r\n\r\n.Date\r\nCAST(AS DATE)\r\nDATE_TRUNC\r\nDATE\r\nTRUNC\r\nSTRFTIME\r\nDateValue(Format)\r\nCONVERT(SQL_DATE)\r\n\r\n\r\n\r\n.Year\r\nYEAR\r\nDATE_PART\r\nYEAR\r\nEXTRACT\r\nSTRFTIME\r\nYear\r\nYEAR\r\n\r\n\r\n\r\n.Month\r\nMONTH\r\nDATE_PART\r\nMONTH\r\nEXTRACT\r\nSTRFTIME\r\nMonth\r\nMONTH\r\n\r\n\r\n\r\n.Day\r\nDAY\r\nDATE_PART\r\nDAY\r\nEXTRACT\r\nSTRFTIME\r\nDay\r\nDAYOFMONTH\r\n\r\n\r\n\r\n.Hour\r\nDATEPART HOUR\r\nDATE_PART\r\nHOUR\r\nEXTRACT\r\nSTRFTIME\r\nHour\r\nHOUR\r\n\r\n\r\n\r\n.Minute\r\nDATEPART MINUTE\r\nDATE_PART\r\nMINUTE\r\nEXTRACT\r\nSTRFTIME\r\nMinute\r\nMINUTE\r\n\r\n\r\n\r\n.Second\r\nDATEPART SECOND\r\nDATE_PART\r\nSECOND\r\nEXTRACT\r\nSTRFTIME\r\nSecond\r\nSECOND\r\n\r\n\r\n\r\n.Subtract(y).Days\r\nDATEDIFF\r\ny-x\r\nDATEDIFF\r\ny-x\r\nx-y\r\nDateDiff\r\nDATEDIFF\r\n\r\n\r\n\r\n.Subtract(y).Seconds\r\nTIMESTAMPDIFF\r\nEXTRACT(EPOCH)\r\nTIMESTAMPDIFF\r\ny-x\r\nx-y\r\nDateDiff\r\nDATEDIFF\r\n\r\n\r\n\r\n.AddYears(i)\r\nDATEADD YEAR\r\n\r\nINTERVAL\r\n\r\nDATE_ADD\r\n\r\nINTERVAL\r\n\r\nDATETIME\r\nDateAdd\r\n\r\n\r\n\r\n\r\n.AddMonths(i)\r\nDATEADD MONTH\r\n\r\nINTERVAL\r\n\r\nDATE_ADD\r\n\r\nINTERVAL\r\n\r\nDATETIME\r\nDateAdd\r\n\r\n\r\n\r\n\r\n.AddDays(f)\r\nDATEADD DAY\r\n\r\nINTERVAL\r\n\r\nDATE_ADD\r\n\r\nINTERVAL\r\n\r\nDATETIME\r\nDateAdd\r\n\r\n\r\n\r\n\r\n.AddHours(f)\r\nDATEADD HOUR\r\n\r\nINTERVAL\r\n\r\nDATE_ADD\r\n\r\nINTERVAL\r\n\r\nDATETIME\r\nDateAdd\r\n\r\n\r\n\r\n\r\n.AddMinutes(f)\r\nDATEADD MINUTE\r\n\r\nINTERVAL\r\n\r\nDATE_ADD\r\n\r\nINTERVAL\r\n\r\nDATETIME\r\nDateAdd\r\n\r\n\r\n\r\n\r\n.AddSeconds(f)\r\nDATEADD SECOND\r\n\r\nINTERVAL\r\n\r\nDATE_ADD\r\n\r\nINTERVAL\r\n\r\nDATETIME\r\nDateAdd\r\n\r\n\r\n\r\n\r\n\r\n\r\nAddYears, AddDays and AddMinutes parameters can be either constant or other SQL-column, except in SQLite which supports only constant.\r\nAddMonths, AddHours and AddSeconds support only constants for now.\r\nOdbc standard doesn\u0027t seem to have a date-add functionality.\r\n.NET has float parameters on some time-functions like AddDays, but SQL may ignore the decimal fraction.\r\nNumerical Functions (e.g. Microsoft.FSharp.Core.Operators)\r\n\r\n\r\n\r\n.NET\r\nMsSqlServer\r\nPostgreSql\r\nMySql\r\nOracle\r\nSQLite\r\nMSAccess\r\nOdbc\r\nNotes\r\n\r\n\r\n\r\n\r\nabs(i)\r\nABS\r\nABS\r\nABS\r\nABS\r\nABS\r\nAbs\r\nABS\r\n\r\n\r\n\r\nceil(i)\r\nCEILING\r\nCEILING\r\nCEILING\r\nCEIL\r\nCAST \u002B 0.5\r\nFix\u002B1\r\nCEILING\r\n\r\n\r\n\r\nfloor(i)\r\nFLOOR\r\nFLOOR\r\nFLOOR\r\nFLOOR\r\nCAST AS INT\r\nInt\r\nFLOOR\r\n\r\n\r\n\r\nround(i)\r\nROUND\r\nROUND\r\nROUND\r\nROUND\r\nROUND\r\nRound\r\nROUND\r\n\r\n\r\n\r\nMath.Round(i,x)\r\nROUND\r\nROUND\r\nROUND\r\nROUND\r\nROUND\r\nRound\r\nROUND\r\n\r\n\r\n\r\ntruncate(i)\r\nTRUNCATE\r\nTRUNC\r\nTRUNCATE\r\nTRUNC\r\n\r\nFix\r\nTRUNCATE\r\n\r\n\r\n\r\nsqrt(i)\r\nSQRT\r\nSQRT\r\nSQRT\r\nSQRT\r\nSQRT\r\nSqr\r\nSQRT\r\n\r\n\r\n\r\nsin(i)\r\nSIN\r\nSIN\r\nSIN\r\nSIN\r\nSIN\r\nSIN\r\nSIN\r\n\r\n\r\n\r\ncos(i)\r\nCOS\r\nCOS\r\nCOS\r\nCOS\r\nCOS\r\nCOS\r\nCOS\r\n\r\n\r\n\r\ntan(i)\r\nTAN\r\nTAN\r\nTAN\r\nTAN\r\nTAN\r\nTAN\r\nTAN\r\n\r\n\r\n\r\nasin(i)\r\nASIN\r\nASIN\r\nASIN\r\nASIN\r\nASIN\r\n\r\nASIN\r\n\r\n\r\n\r\nacos(i)\r\nACOS\r\nACOS\r\nACOS\r\nACOS\r\nACOS\r\n\r\nACOS\r\n\r\n\r\n\r\natan(i)\r\nATAN\r\nATAN\r\nATAN\r\nATAN\r\nATAN\r\nAtn\r\nATAN\r\n\r\n\r\n\r\nMath.Max(x,y)\r\nSELECT(MAX)\r\nGREATEST\r\nGREATEST\r\nGREATEST\r\nMAX\r\niif(x\u0026gt;y,x,y)\r\nGREATEST\r\n\r\n\r\n\r\nMath.Min(x,y)\r\nSELECT(MIN)\r\nLEAST\r\nLEAST\r\nLEAST\r\nMIN\r\niif(x\u0026lt;y,x,y)\r\nLEAST\r\n\r\n\r\n\r\nMath.Pow(x,y)\r\nPOWER(x,y)\r\nPOWER(x,y)\r\nPOWER(x,y)\r\nPOWER(x,y)\r\n\r\nx^y\r\nPOWER(x,y)\r\n\r\n\r\n\r\n(\u002B)\r\n\u002B\r\n\u002B\r\n\u002B\r\n\u002B\r\n\u002B\r\n\u002B\r\n\u002B\r\n\r\n\r\n\r\n(-)\r\n-\r\n-\r\n-\r\n-\r\n-\r\n-\r\n-\r\n\r\n\r\n\r\n(*)\r\n*\r\n*\r\n*\r\n*\r\n*\r\n*\r\n*\r\n\r\n\r\n\r\n(/)\r\n/\r\n/\r\n/\r\n/\r\n/\r\n/\r\n/\r\n\r\n\r\n\r\n(%)\r\n%\r\n%\r\n%\r\n%\r\n%\r\n%\r\n%\r\n\r\n\r\n\r\n\r\n\r\nMicrosoft SQL Server doesn\u0027t have Greatest and Least functions, so that will be done via nested SQL clause: (select max(v) from (values (x), (y)) as value(v))\r\nIt might also not be standard ODBC, but it should work e.g. on Amazon Redshift.\r\nCondition operations and others\r\n\r\n\r\n\r\n.NET\r\nMsSqlServer\r\nPostgreSql\r\nMySql\r\nOracle\r\nSQLite\r\nMSAccess\r\nOdbc\r\nNotes\r\n\r\n\r\n\r\n\r\n.ToString()\r\nCAST(NVARCHAR)\r\n::varchar\r\nCAST(CHAR)\r\nCAST(VARCHAR)\r\nCAST(TEXT)\r\nCStr\r\nCONVERT\r\n\r\n\r\n\r\nif x then y else z\r\nCASE WHEN\r\nCASE WHEN\r\nIF(x,y,z)\r\nCASE WHEN\r\nCASE WHEN\r\niif(x,y,z)\r\nCASE WHEN\r\n\r\n\r\n\r\n\r\n\r\nIf the condition does not use SQL columns, it will be parsed before creating SQL.\r\nIf the condition is containing columns, it will be parsed into SQL.\r\nIf the condition is the result of projection (the final select clause),\r\nit may be parsed after execution of the SQL, depending on the parameter setting selectOperations.\r\nAggregate Functions\r\nAlso, you can use these to return an aggregated value, or in a group-by-clause:\r\n\r\n\r\n\r\n.NET\r\nMsSqlServer\r\nPostgreSql\r\nMySql\r\nOracle\r\nSQLite\r\nMSAccess\r\nOdbc\r\nNotes\r\n\r\n\r\n\r\n\r\ncount\r\nCOUNT\r\nCOUNT\r\nCOUNT\r\nCOUNT\r\nCOUNT\r\nCOUNT\r\nCOUNT\r\n\r\n\r\n\r\nsum\r\nSUM\r\nSUM\r\nSUM\r\nSUM\r\nSUM\r\nSUM\r\nSUM\r\n\r\n\r\n\r\nmin\r\nMIN\r\nMIN\r\nMIN\r\nMIN\r\nMIN\r\nMIN\r\nMIN\r\n\r\n\r\n\r\nmax\r\nMAX\r\nMAX\r\nMAX\r\nMAX\r\nMAX\r\nMAX\r\nMAX\r\n\r\n\r\n\r\naverage\r\nAVG\r\nAVG\r\nAVG\r\nAVG\r\nAVG\r\nAVG\r\nAVG\r\n\r\n\r\n\r\nStdDev\r\nSTDEV\r\nSTDDEV\r\nSTDDEV\r\nSTDDEV\r\n\r\nSTDEV\r\nSTDEV\r\n\r\n\r\n\r\nVariance\r\nVAR\r\nVARIANCE\r\nVARIANCE\r\nVARIANCE\r\n\r\nDVAR\r\nVAR\r\n\r\n\r\n\r\n\r\n\r\nStdDev, Variance are located in FSharp.Data.Sql.Operators namespace and also Seq.stdDevAsync and Seq.varianceAsync.\r\nOthers can be used from List, Seq and Array modules, or Seq.countAsync, Seq.sumAsync, Seq.minAsync, Seq.maxAsync, Seq.averageAsync.\r\nMore details\r\nBy default, query { ... } is IQueryable\u0026lt;T\u0026gt;, which is lazy. To execute the query you have to do Seq.toList, Seq.toArray, or perform some corresponding operations. If you don\u0027t do that, but just continue inside another query { ... } or use System.Linq .Where(...) etc, that will still be combined to the same SQL-query.\r\nThere are some limitations to the complexity of your queries but for example\r\nthis is still ok and will give you a very simple select-clause:\r\nlet randomBoolean = \r\n let r = System.Random()\r\n fun () -\u0026gt; r.NextDouble() \u0026gt; 0.5\r\nlet c1 = randomBoolean()\r\nlet c2 = randomBoolean()\r\nlet c3 = randomBoolean()\r\n\r\nlet sample =\r\n query {\r\n for order in ctx.Main.Orders do\r\n where ((c1 || order.Freight \u0026gt; 0m) \u0026amp;\u0026amp; c2)\r\n let x = \u0026quot;Region: \u0026quot; \u002B order.ShipAddress\r\n select (x, if c3 then order.ShipCountry else order.ShipRegion)\r\n } |\u0026gt; Seq.toArray\r\n\r\nIt can be for example (but it can also leave [Freight]-condition away and select ShipRegion instead of ShipAddress, depending on your random values):\r\n SELECT \r\n [_arg2].[ShipAddress] as \u0027ShipAddress\u0027,\r\n [_arg2].[ShipCountry] as \u0027ShipCountry\u0027 \r\n FROM main.Orders as [_arg2] \r\n WHERE (([_arg2].[Freight]\u0026gt; @param1)) \r\n\r\nExpressions\r\nThese operators perform no specific function in the code itself. Instead, they\r\nare placeholders replaced by their database-specific server-side operations.\r\nTheir utility is in forcing the compiler to check against the correct types.\r\nlet bergs = ctx.Main.Customers.Individuals.BERGS\r\n\r\nOperators\r\nYou can find some custom operators using FSharp.Data.Sql:\r\n\r\n|=| (In set)\r\n|\u0026lt;\u0026gt;| (Not in set)\r\n=% (Like)\r\n\u0026lt;\u0026gt;% (Not like)\r\n!! (Left join)\r\n\r\nBest practices working with queries\r\nWhen using Option types, check IsSome in where-clauses.\r\nYou may want to use the F# Option to represent database null, with SQLProvider\r\nstatic constructor parameter UseOptionTypes = true.\r\nDatabase null-checking is done with x IS NULL.\r\nWith option types, the easiest way to do that is to check IsSome and IsNone:\r\nlet result =\r\n query {\r\n for order in ctx.Main.Orders do\r\n where (\r\n order.ShippedDate.IsSome \u0026amp;\u0026amp; \r\n order.ShippedDate.Value.Year = 2015)\r\n select (order.OrderId, order.Freight)\r\n } |\u0026gt; Array.executeQueryAsync\r\n\r\nUsing booleans and simple variables (from outside a scope) in where-clauses\r\nThis is how you make your code easier to read when you have multiple code paths.\r\nSQLProvider will optimize the SQL-clause before sending it to the database,\r\nso it will still be simple.\r\nConsider how clean is this source-code compared to others with similar logic:\r\nopen System.Linq\r\nlet getOrders(futureOrders:bool, shipYears:int list) =\r\n\r\n let today = DateTime.UtcNow.Date\r\n let pastOrders = not futureOrders\r\n let noYearFilter = shipYears.IsEmpty\r\n\r\n let result =\r\n query {\r\n for order in ctx.Main.Orders do\r\n where ( \r\n (noYearFilter || shipYears.Contains(order.ShippedDate.Year))\r\n \u0026amp;\u0026amp;\r\n ((futureOrders \u0026amp;\u0026amp; order.OrderDate \u0026gt; today) ||\r\n (pastOrders \u0026amp;\u0026amp; order.OrderDate \u0026lt;= today))\r\n ) \r\n select (order.OrderId, order.Freight)\r\n } |\u0026gt; Array.executeQueryAsync\r\n result\r\n\r\n\r\n Technical details\r\nThis is what happens behind the scenes:\r\n\r\nThe F# query syntax is LINQ Abstract Syntax Tree (AST), and SQLProvider does process those on querying.\r\n\r\n\r\nDon\u0027t select all the fields if you don\u0027t need them\r\nIn general, you should select only the columns you need\r\nand only a whole object if you update its fields.\r\n// Select all the fields from a table, basically:\r\n// SELECT TOP 1 Address, City, CompanyName, \r\n// ContactName, ContactTitle, Country, \r\n// CustomerID, Fax, Phone, PostalCode, \r\n// Region FROM main.Customers\r\nlet selectFullObject =\r\n query {\r\n for customer in ctx.Main.Customers do\r\n select customer\r\n } |\u0026gt; Seq.tryHeadAsync\r\n\r\n// Select only two fields, basically:\r\n// SELECT TOP 1 Address, City FROM main.Customers\r\nlet selectSmallObject =\r\n query {\r\n for customer in ctx.Main.Customers do\r\n select (customer.Address, customer.City)\r\n } |\u0026gt; Seq.tryHeadAsync\r\n\r\nIf you still want the whole objects and return those to a client\r\nas untyped records, you can use ColumnValues |\u0026gt; Map.ofSeq:\r\nlet someQuery =\r\n query {\r\n for customer in ctx.Main.Customers do\r\n //where(...)\r\n select customer\r\n } |\u0026gt; Seq.toArray\r\n\r\nsomeQuery |\u0026gt; Array.map(fun c -\u0026gt; c.ColumnValues |\u0026gt; Map.ofSeq)\r\n\r\nF# Map values are accessed like this: myItem.[\u0022City\u0022]\r\nUsing code logic in select-clause\r\nFeel free to insert non-Sql syntax to select-clauses.\r\nThey will be parsed business-logic side!\r\nlet fetchOrders customerZone =\r\n let currentDate = DateTime.UtcNow.Date\r\n query {\r\n for order in ctx.Main.Orders do\r\n // where(...)\r\n select {\r\n OrderId = order.OrderId\r\n Timezone = \r\n parseTimezoneFunction(order.ShipRegion, order.ShippedDate, customerZone);\r\n Status = \r\n if order.ShippedDate \u0026gt; currentDate then \u0026quot;Shipped\u0026quot;\r\n elif order.OrderDate \u0026gt; currentDate then \u0026quot;Ordered\u0026quot;\r\n elif order.RequiredDate \u0026gt; currentDate then \u0026quot;Late\u0026quot;\r\n else \u0026quot;Waiting\u0026quot;\r\n OrderRows = [||];\r\n }\r\n } |\u0026gt; Seq.toArray\r\n\r\nYou can\u0027t have a let inside a select, but you can have custom function calls like\r\nparseTimezoneFunction here. Just be careful; they are executed separately for each result item.\r\nSo, if you also want SQL to execute there, doing a separate function and taking\r\na collection as a parameter is better. See below.\r\nUsing one sub-query to populate items\r\nSometimes, you want to fetch efficiently sub-items, like\r\n\u0022Give me all orders with their order-rows\u0022\r\nIn the previous example, we fetched OrderRows as an empty array.\r\nNow, we populate those with one query in an immutable way:\r\nlet orders = fetchOrders 123\r\n\r\nlet orderIds = \r\n orders \r\n |\u0026gt; Array.map(fun o -\u0026gt; o.OrderId) \r\n |\u0026gt; Array.distinct\r\n \r\n// Fetch all rows with one query\r\nlet subItems =\r\n query {\r\n for row in ctx.Main.OrderDetails do\r\n where (orderIds.Contains(row.OrderId))\r\n select (row.OrderId, row.ProductId, row.Quantity)\r\n } |\u0026gt; Seq.toArray\r\n \r\nlet ordersWithDetails =\r\n orders \r\n |\u0026gt; Array.map(fun order -\u0026gt;\r\n {order with \r\n // Match the corresponding sub items\r\n // to a parent item\u0026#39;s colleciton:\r\n OrderRows = \r\n subItems \r\n |\u0026gt; Array.filter(fun (orderId,_,_) -\u0026gt; \r\n order.OrderId = orderId)\r\n })\r\n\r\nHow to deal with large IN-queries?\r\nThe previous query had orderIds.Contains(row.OrderId).\r\nThis is fine if your collection has 50 items. But what if there are 5000 orderIds?\r\nSQL-IN will fail. You have two easy options to deal with that.\r\nChunk your collection:\r\nF# has built-in chunkBySize function!\r\nlet chunked = orderIds |\u0026gt; Array.chunkBySize 100\r\n\r\nfor chunk in chunked do\r\n let all =\r\n query {\r\n for row in ctx.Main.OrderDetails do\r\n where (chunk.Contains(row.OrderId))\r\n select (row)\r\n } |\u0026gt; Seq.toArray\r\n\r\n all |\u0026gt; Array.iter(fun row -\u0026gt; row.Discount \u0026lt;- 0.1)\r\n ctx.SubmitUpdates()\r\n\r\nCreating a nested query\r\nBy leaving the last |\u0026gt; Seq.toArray away from your main query, you create a lazy\r\nIQueryable\u0026lt;...\u0026gt;-query. This means your IN-objects are not fetched from\r\nthe database but are actually formed as a nested query.\r\nlet nestedOrders =\r\n query {\r\n for order in ctx.Main.Orders do\r\n // where(...)\r\n select (order.OrderId)\r\n } \r\n\r\nlet subItemsAll =\r\n query {\r\n for row in ctx.Main.OrderDetails do\r\n where (nestedOrders.Contains(row.OrderId))\r\n select (row.OrderId, row.ProductId, row.Quantity)\r\n } |\u0026gt; Seq.toArray\r\n\r\n// similar as previous fetchOrders\r\nlet fetchOrders2 customerZone =\r\n let currentDate = DateTime.UtcNow.Date\r\n query {\r\n for order in ctx.Main.Orders do\r\n // where(...)\r\n select {\r\n OrderId = order.OrderId\r\n Timezone = \r\n parseTimezoneFunction(order.ShipRegion, order.ShippedDate, customerZone);\r\n Status = \r\n if order.ShippedDate \u0026gt; currentDate then \u0026quot;Shipped\u0026quot;\r\n elif order.OrderDate \u0026gt; currentDate then \u0026quot;Ordered\u0026quot;\r\n elif order.RequiredDate \u0026gt; currentDate then \u0026quot;Late\u0026quot;\r\n else \u0026quot;Waiting\u0026quot;\r\n OrderRows = \r\n subItemsAll |\u0026gt; (Array.filter(fun (orderId,_,_) -\u0026gt; \r\n order.OrderId = orderId));\r\n }\r\n } |\u0026gt; Seq.toArray\r\n\r\nThat way, the order hit count doesn\u0027t matter as the database takes care of it.\r\nGroup-by and more complex query scenarios\r\nOne problem with SQLProvider is that monitoring the SQL-clause performance hitting\r\ndatabase indexes is hard to track. So the best way to handle complex SQL\r\nis to create a database view and query that from SQLProvider.\r\nStill, if you want to use LINQ groupBy, this is how it\u0027s done:\r\nlet freightsByCity =\r\n query {\r\n for o in ctx.Main.Orders do\r\n //where (...)\r\n groupBy o.ShipCity into cites\r\n select (cites.Key, cites.Sum(fun order -\u0026gt; order.Freight))\r\n } |\u0026gt; Array.executeQueryAsync\r\n\r\nGroup-by support is limited, mostly for single tables only.\r\nF# Linq query syntax doesn\u0027t support doing select count(1), sum(UnitPrice) from Products\r\nbut you can group by a constant to get that:\r\nlet qry = \r\n query {\r\n for p in ctx.Main.Products do\r\n groupBy 1 into g\r\n select (g.Count(), g.Sum(fun p -\u0026gt; p.UnitPrice))\r\n } |\u0026gt; Seq.head\r\n\r\nFor more info, see:\r\n\r\nComposable Query\r\nMapping to record types\r\nCRUD operations\r\nSample queries\r\n\r\n","headings":["How to see the SQL-clause?","Querying","SELECT -clause operations","SelectOperations.DotNetSide (Default)","SelectOperations.DatabaseSide","Supported Query Expression Keywords","Canonical Functions",".NET String Functions (.NET)",".NET DateTime Functions","Numerical Functions (e.g. Microsoft.FSharp.Core.Operators)","Condition operations and others","Aggregate Functions","More details","Expressions","Operators","Best practices working with queries","When using Option types, check IsSome in where-clauses.","Using booleans and simple variables (from outside a scope) in where-clauses","Don\u0027t select all the fields if you don\u0027t need them","Using code logic in select-clause","Using one sub-query to populate items","How to deal with large IN-queries?","Chunk your collection:","Creating a nested query","Group-by and more complex query scenarios"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/sqlite.html","title":"SQLite Provider\r\n","content":"SQLite Provider\r\nParameters\r\nConnectionString\r\nA basic connection string used to connect to the SQLite database.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet connectionString = \r\n \u0026quot;Data Source=\u0026quot; \u002B \r\n __SOURCE_DIRECTORY__ \u002B @\u0026quot;/../../../tests/SqlProvider.Tests/scripts/northwindEF.db;\u0026quot; \u002B \r\n \u0026quot;Version=3;foreign keys=true\u0026quot;\r\n\r\nResolutionPath\r\nPath to search for database vendor-specific assemblies. Specify the path where System.Data.SQLite.dll is stored.\r\nIf you use the System.Data.SQLite NuGet package and target .NET 4.6, the path would be something like\r\n__SOURCE_DIRECTORY__ \u002B @\u0022\\..\\packages\\System.Data.SQLite.Core.\u0026lt;version\u0026gt;\\lib\\net46\u0022.\r\nBoth absolute and relative paths are supported.\r\nNote that System.Data.SQLite.dll will look for the native interop library:\r\n\r\non Windows: SQLite.Interop.dll in the x64 and x86 subdirectories of the resolution path.\r\non Linux: libSQLite.Interop.so in the resolution path directory.\r\n\r\nThe interop libraries are not properly placed after the System.Data.SQLite NuGet package is added, so you might have to\r\nmanually copy the interop libraries:\r\n\r\n\r\non Windows: copy x64 and x86 subdirectories from SQLite build directory, which typically is \r\n\u0026lt;project root\u0026gt;\\packages\\System.Data.SQLite.Core.\u0026lt;version\u0026gt;\\build\\net46.\r\n\r\non Linux: first, build the libSQLite.Interop.so using \u0026lt;srcDir\u0026gt;/Setup/compile-interop-assembly-release.sh script from System.Data.SQLite source distribution sqlite-netFx-source-1.x.xxx.x.zip. And then copy it from \u0026lt;srcDir\u0026gt;/bin/2013/Release/bin/.\r\n\r\nIf System.Data.SQLite.dll is in the location where NuGet places it by default, you don\u0027t have to submit\r\nthe ResolutionPath parameter at all, but you still need to copy the interop libraries as described above.\r\nIf you use Microsoft.Data.Sqlite driver, you still need the physical dll, (in that case e_sqlite3.dll), to be in resolutionPath or folder under operating system PATH variable.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet resolutionPath = __SOURCE_DIRECTORY__ \u002B @\u0026quot;/../../../tests/SqlProvider.Tests/libs\u0026quot;\r\n\r\nSQLiteLibrary\r\nSpecifies what SQLite library to use. This is an SQLiteLibrary enumeration, defined in the FSharp.Data.Sql.Common\r\nnamespace, which has the following members:\r\n\r\n*AutoSelect* - Uses System.Data.SQLite under .NET, Mono.Data.SQLite under Mono and Microsoft.Data.Sqlite under NET Core. This is the default.\r\n*MonoDataSQLite* - Always uses Mono.Data.SQLite.\r\n*SystemDataSQLite* - Always uses System.Data.SQLite.\r\n*MicrosoftDataSqlite* - Always uses Microsoft.Data.Sqlite. This is experimental until it supports GetSchema().\r\n\r\nExample\r\ntype sql = SqlDataProvider\u0026lt;\r\n Common.DatabaseProviderTypes.SQLITE, \r\n SQLiteLibrary = Common.SQLiteLibrary.SystemDataSQLite,\r\n ConnectionString = connectionString, \r\n ResolutionPath = resolutionPath, \r\n CaseSensitivityChange = Common.CaseSensitivityChange.ORIGINAL\u0026gt;\r\n\r\nlet ctx = sql.GetDataContext()\r\n\r\nlet customers = \r\n ctx.Main.Customers\r\n |\u0026gt; Seq.map(fun c -\u0026gt; c.ContactName)\r\n |\u0026gt; Seq.toList\r\n\r\nCRUD\r\nWhen you do insert operation, after .SubmitUpdates call you can get inserted rowid like this:\r\nlet myCustomer = ctx.Main.Customers.\u0060\u0060Create(CompanyName)\u0060\u0060(\u0026quot;MyCompany\u0026quot;)\r\nctx.SubmitUpdates()\r\nlet rowid = myCustomer.GetColumn(\u0026quot;rowid\u0026quot;) : int\r\n\r\n","headings":["SQLite Provider","Parameters","ConnectionString","ResolutionPath","SQLiteLibrary","Example","CRUD"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/techdetails.html","title":"techdetails","content":"Version control instructions\r\nGit information is in a separate document.\r\nThe environment\r\nDatabases that you should need for development:\r\n\r\nDemo-data database scripts are at: /src/DatabaseScripts/\r\nAccess database is at: /docs/files/msaccess/Northwind.MDB\r\nSQLite database is at: /tests/SqlProvider.Tests/db/northwindEF.db\r\n\r\nEven though our test run will run modifications to the test databases, don\u0027t check in these *.mdb and *.db files with your commit, to avoid bad merge-cases.\r\nSolution structure\r\nWe use Fake and Paket. Before opening the solutions, you have to run build.cmd on Windows (or sh ./build.sh on Mac/Linux).\r\nThe main source solution is SQLProvider.sln.\r\nThe unit tests are located in another one, SQLProvider.Tests.sln, and when you open the solution, it will lock the bin\\net48\\FSharp.Data.SqlProvider.dll, and after that you can\u0027t build the main solution.\r\n\r\nTo debug design-time features, you \u0022Attach to process\u0022 the main solution debugger to another instance of Visual Studio running the test solution.\r\nTo debug runtime, attach it to e.g. fsi.exe and run the code in the interactive.\r\n\r\nWorkarounds for \u0022file in use\u0022 (issue #172)\r\n\r\nDebugging execution: Have all the test-files closed in your test-project when you open it with VS. Then you can run tests from the Tests Explorer window (and even debug them if you open the files to that instance of VS from src\\SqlProvider).\r\nOr you can open tests with some other editor than Visual Studio 2015\r\n\r\nReferenced Files\r\n\r\nDocumentation is located at SQLProvider/docs/content/core, and it\u0027s converted directly to *.html help files by the build-script.\r\nsrc/ProvidedTypes.fsi, src/ProvidedTypes.fs and src/Code/ExpressionOptimizer.fs are coming from other repositories restored by the first build. The location is at packet.dependencies. Don\u0027t edit them manually.\r\n\r\nTest cases\r\nThere are database-specific test files as scripts in the test solution, /tests/SqlProvider.Tests/scripts/, but also one generic /tests/SqlProvider.Tests/QueryTests.fs which is running all the SQLite tests in the build script.\r\nHigh-level description of the provider\r\nContext and design time\r\nYou have a source code like:\r\ntype sql = SqlDataProvider\u0026lt;...params...\u0026gt;\r\nlet dc = sql.GetDataContext()\r\n\r\nWhat will first happen in the design-time, is that this will call createTypes of SqlDesignTime.fs and create (as lazily as possible) the database schema types (the shape of the database). These methods are added to the sql.datacontext and are stored to concurrent dictionaries. Visual Studio will do a lot of background processing so thread-safety is important here.\r\nGetDataContext() will return a dynamic class called dataContext which will on design-time call class SqlDataContext in file SqlRuntime.DataContext.fs through interface ISqlDataContext. SqlDataContext uses ProviderBuilder to create database specific providers, fairly well documented ISqlProvider in file SqlRuntime.Common.fs.\r\nQuerying\r\nThe entity-items themselves are rows in the database data, and they are modelled as dynamic sub-classes of SqlEntity, base-class in file SqlRuntime.Common.fs which can be thought of as a wrapper for Dictionary\u0026lt;string,obj\u0026gt; (a column name, and the value). SqlEntity is actually used for all kinds of result data, so the data columns may not correspond to the actual data values. Mostly the results of the data are shaped as SqlQueryable\u0026lt;SqlEntity\u0026gt; or SqlQueryable\u0026lt;\u0027T\u0026gt;, which is SQLProvider\u0027s class for IQueryable\u0026lt;\u0027T\u0026gt; items.\r\nquery {\r\n for cust in dbc.Main.Customers do\r\n where (\u0026quot;ALFKI\u0026quot; = cust.CustomerId)\r\n select cust\r\n} |\u0026gt; Seq.toArray\r\n\r\nThis query is translated to a LINQ-expression-tree through Microsoft.FSharp.Linq.QueryFSharpBuilder. That will call IQueryable\u0026lt;\u0027T\u0026gt;\u0027s member Provider to execute two things for the LINQ-expression-tree: first CreateQuery and later Execute.\r\nParsing the LINQ-expression-tree\r\nCreateQuery will hit our SqlQueryable\u0026lt;...\u0026gt;\u0027s Provider (IQueryProvider) property. LINQ-expression-trees can be recursive type structures, so we will call CreateQuery for each linq-method. We get the expression-tree as a parameter and parse that with (multi-layer-) active patterns.\r\nOur example of the LINQ-expression tree is:\r\n.Call System.Linq.Queryable.Where(\r\n .Constant\u0026lt;System.Linq.IQueryable\u00601[SqlEntity]\u0026gt;(SqlQueryable\u00601[SqlEntity]),\r\n \u0027(.Lambda #Lambda1\u0026lt;System.Func\u00602[SqlEntity,Boolean]\u0026gt;))\r\n.Lambda #Lambda1\u0026lt;System.Func\u00602[SqlEntity,Boolean]\u0026gt;(SqlEntity $cust) {\r\n .Call $cust.GetColumn(\u0022CustomerID\u0022) == \u0022ALFKI\u0022\r\n}\r\n\r\nso it would hit this in SqlRuntime.Linq.fs:\r\n| MethodCall(None, (MethodWithName \u0026quot;Where\u0026quot; as meth), [ SourceWithQueryData source; OptionalQuote qual ]) -\u0026gt;\r\n\r\nbecause the LINQ-expression-tree has ExpressionType.Call named \u0022Where\u0022 with source of IWithSqlService (which is the SqlQueryable).\r\nWhat happens then is the parsing of the Where-query. Where-queries are nested structures having known conditions (modelled with pattern Condition). If the conditions have SqlColumnGets, a pattern that says that it\u0027s SqlEntity with method GetColumn, we know that it has to be part of SQL-clause.\r\nWe collect all the known patterns in IWithSqlServices field SqlExpression, being a type SqlExp, our non-complete known recursive model-tree of SQL clauses.\r\n\r\nExecution of the query\r\nEventually, there also comes the call executeQuery (or executeQueryScalar for SQL-queries that will return a single value like count), either by enumeration of our IQueryable or at the end of LINQ-expression-tree. That will call QueryExpressionTransformer.convertExpression. What happens there (in\r\nSqlRuntime.Linq.fs):\r\n\r\nWe create a projection-lambda. This is described in detail below.\r\nWe convert our SqlExp to real SQL-clause with QueryExpressionTransformer.convertExpression calling provider\u0027s GenerateQueryText-method. Each provider may have some differences in their SQL-syntax.\r\nWe gather the results as IEnumerable\u0026lt;SqlEntity\u0026gt; (or a single return value like count).\r\nWe execute the projection-lambda to the results.\r\n\r\nIn our example, the whole cust object was selected.\r\nFor security reasons, we don\u0027t do SELECT *, but we actually list the columns at compile time.\r\nThe TupleIndex of IWithSqlService is a way to collect joined tables to match the sql-aliasses, here the [cust].\r\nSELECT [cust].[Address] as \u0027Address\u0027, \r\n [cust].[City] as \u0027City\u0027,\r\n [cust].[CompanyName] as \u0027CompanyName\u0027,\r\n [cust].[ContactName] as \u0027ContactName\u0027,\r\n [cust].[ContactTitle] as \u0027ContactTitle\u0027,\r\n [cust].[Country] as \u0027Country\u0027,\r\n [cust].[CustomerID] as \u0027CustomerID\u0027,\r\n [cust].[Fax] as \u0027Fax\u0027,\r\n [cust].[Phone] as \u0027Phone\u0027,\r\n [cust].[PostalCode] as \u0027PostalCode\u0027,\r\n [cust].[Region] as \u0027Region\u0027 \r\nFROM main.Customers as [cust] \r\nWHERE (([cust].[CustomerID]= @param1))\r\n\r\n-- params @param1 - \u0022ALFKI\u0022;\r\n\r\nProjection-lambda\r\nNow, if the select-clause had been complex:\r\nquery {\r\n for emp in dc.Main.Employees do\r\n select (emp.BirthDate.DayOfYear \u002B 3)\r\n} |\u0026gt; Seq.toArray\r\n\r\nWe don\u0027t know the function of DayOfYear for each different SQL-providers (Oracle/MSSQL/Odbc/...), but we still want this code to work. The LINQ-expression-tree for this query is:\r\n.Call System.Linq.Queryable.Select(\r\n .Constant\u0026lt;System.Linq.IQueryable\u00601[SqlEntity]\u0026gt;(SqlQueryable\u00601[SqlEntity]),\r\n \u0027(.Lambda #Lambda1\u0026lt;System.Func\u00602[SqlEntity,Int32]\u0026gt;))\r\n.Lambda #Lambda1\u0026lt;System.Func\u00602[SqlEntity,System.Int32]\u0026gt;(SqlEntity $emp) {\r\n (.Call $emp.GetColumn(\u0022BirthDate\u0022)).DayOfYear \u002B 3\r\n}\r\n\r\nWhat happens now is that in SqlRuntime.QueryExpression.fs, we parse the whole LINQ-expression-tree, and find the parts that we do know to belong to SQL:\r\nthe SqlEntity\u0027s emp.GetColumn(\u0022BirthDate\u0022), and create a lambda-expression where this is replaced with a parameter:\r\nfun empBirthDate -\u0026gt; empBirthDate.DayOfYear \u002B 3\r\n\r\nNow when we get the empBirthDate from the SQL result, we can execute this lambda for the parameter in the .NET-side, not SQL, and then we get the correct result. This is done with for e in results -\u0026gt; projector.DynamicInvoke(e) in SqlRuntime.Linq.fs.\r\nHow to debug SQLProvider in your own solution, not the test-project\r\nThe runtime debugging can be done just like any other:\r\n\r\nBuild your own project\r\nThen just build SQLProvider.sln and go to bin-folder, select your framework, and copy FSharp.Data.SqlProvider.dll and FSharp.Data.SqlProvider.pdb\r\nReplace your own project\u0027s bin-folder copies of these two files, run your software without rebuilding.\r\n\r\nDebugging the design-time VS2022 is doable but a bit more complex.\r\nThis will mess up your SQLProvider Nuget cache, so after done, delete the SQLProvider cache-folder and restore the package again.\r\n\r\nOpen SQLProvider.sln (with Visual Studio 2022) and build it (in debug mode). Keep this open for now.\r\nOpen Explorer, it has made under bin-folder some folders, e.g. \\net48 \\net6.0 \\netstandard2.0 \\netstandard2.1 and \\typeproviders\r\nOpen another explorer, go to your location of Nuget cache, the version you are using e.g. C:\\Users\\me\\.nuget\\packages\\sqlprovider\\1.3.30\r\nReplace the Nuget cache \\typeproviders folder with your fresh bin typeproviders folder.\r\nReplace the Nuget cache \\lib folder with other folders from your fresh bin folder.\r\nOpen another instance of VS2022 to the start-screen, but don\u0027t open any project yet.\r\nGo back to your first instance of VS2022 with SQLProvider.sln. Add some breakpoints. Select from the top menu: Debug - Attach to Process...\r\nSelect devenv.exe, which is another VS2022 instance.\r\nSwitch to this new instance and load your own project that uses SQLProvider, and it\u0027ll stop at the breakpoints.\r\n\r\nOther things to know\r\n\r\nSQLProvider also runs ExpressionOptimizer functions to simplify the LINQ-expression-trees\r\n\r\nIf you do IN-query (LINQ-Contains) to IEnumerable, it\u0027s as normal IN-query. Still, if the source collection is SqlQueryable, then the query is serialized as a nested query, where we have to check that the parameter names won\u0027t collide (i.e. param1 can be used only once).\r\nThis documentation was written on 2017-04-11.\r\n\r\n\r\n","headings":["Version control instructions","The environment","Solution structure","Workarounds for \u0022file in use\u0022 (issue #172)","Referenced Files","Test cases","High-level description of the provider","Context and design time","Querying","Parsing the LINQ-expression-tree","Execution of the query","Projection-lambda","How to debug SQLProvider in your own solution, not the test-project","Other things to know"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/unittest.html","title":"SQLProvider allows you to unit-test your SQL-logic\r\n","content":"SQLProvider allows you to unit-test your SQL-logic\r\nThat\u0027s a clear advantage on large-scale projects, where there are multiple developers and\r\nthe SQL-queries grow more complex over time.\r\n\r\nDebugging. It is faster to debug the unit test than to spin the full environment again and again.\r\nRefactoring: To ensure what the original functionality is actually doing before you modify it.\r\n\r\nWhy to unit-test?\r\nF# strong typing provides safety over raw SQL: Instead of your customer finding an issue, your code will not compile if the database shape is wrong,\r\nfor example, someone removed an important column.\r\nSQLProvider does parametrized SQL, you can watch the executed SQL, and you can even open the parameterized SQL parameters for easier debugging:\r\nFSharp.Data.Sql.Common.QueryEvents.SqlQueryEvent \r\n|\u0026gt; Event.add (fun e -\u0026gt; System.Console.WriteLine (e.ToRawSqlWithParamInfo()))\r\n\r\nBut unit-testing is a good addition in scenarios where:\r\n\r\nYour database is very dynamic, and data is changing all the time\r\nYou want to ensure the logic works over a period of time\r\nYou have a big project where build-time takes long\r\nYou want Continuous Integration, but your test-data or database is unstable.\r\n\r\nHow?\r\nThere are 2 helper functions to mock the database connection:\r\n\r\nFSharp.Data.Sql.Common.OfflineTools.CreateMockEntities\u0026lt;\u0027T\u0026gt; - With this, you can mock a single table.\r\nFSharp.Data.Sql.Common.OfflineTools.CreateMockSqlDataContext\u0026lt;\u0027T\u0026gt; - With this, you can mock a context with multiple tables\r\n\r\nYou just feed anonymous records like they would be database rows.\r\nYou don\u0027t need to add all the columns, just the ones you use in your query.\r\nBut you can add extra-columns for easier asserts.\r\nExample: executable business logic\r\nopen System\r\n\r\ntype OrderDateFilter =\r\n| OrderDate\r\n| ShippedDate\r\n| Either\r\n\r\nlet someProductionFunction (ctx:sql.dataContext) (orderType:OrderDateFilter) (untilDate:System.DateTime) =\r\n task {\r\n let ignoreOrderDate, ignoreShippedDate =\r\n match orderType with\r\n | OrderDate -\u0026gt; false, true\r\n | ShippedDate -\u0026gt; true, false\r\n | Either -\u0026gt; false, false\r\n\r\n let tomorrow = untilDate.AddDays(1.).Date\r\n let someLegacyCondition = 0 // we don\u0026#39;t need this anymore\r\n\r\n let itms = \r\n query {\r\n for order in ctx.Main.Orders do\r\n join cust in ctx.Main.Customers on (order.CustomerId = cust.CustomerId)\r\n where ((cust.City = \u0026quot;London\u0026quot; || cust.City = \u0026quot;Paris\u0026quot; ) \u0026amp;\u0026amp; (\r\n (ignoreOrderDate || order.OrderDate \u0026lt; tomorrow) \u0026amp;\u0026amp; (someLegacyCondition \u0026lt; 15)) \u0026amp;\u0026amp;\r\n (ignoreShippedDate || order.ShippedDate \u0026lt; tomorrow) \u0026amp;\u0026amp;\r\n cust.CustomerId \u0026lt;\u0026gt; null \u0026amp;\u0026amp; order.Freight \u0026gt; 10m \r\n )\r\n select (cust.PostalCode, order.Freight)\r\n }\r\n let! res = itms |\u0026gt; Array.executeQueryAsync\r\n\r\n //maybe some post-processing here...\r\n return res\r\n }\r\n\r\nExample, unit-test part\r\nNote: CustomerID, not CustomerId. These are the database field-names, not the nice LINQ names.\r\nlet \u0060\u0060mock for unit-testing: datacontext\u0060\u0060() =\r\n task {\r\n let sampleDataMap =\r\n [ \u0026quot;main.Customers\u0026quot;,\r\n [| {| CustomerID = \u0026quot;1\u0026quot;; City = \u0026quot;Paris\u0026quot;; PostalCode = \u0026quot;75000\u0026quot;; Description = \u0026quot;This is good\u0026quot;; |} \r\n {| CustomerID = \u0026quot;2\u0026quot;; City = \u0026quot;London\u0026quot;; PostalCode = \u0026quot;E143AB\u0026quot;; Description = \u0026quot;This is good\u0026quot;; |}\r\n {| CustomerID = \u0026quot;3\u0026quot;; City = \u0026quot;Espoo\u0026quot;; PostalCode = \u0026quot;02600\u0026quot;; Description = \u0026quot;Ignore this guy\u0026quot;; |}\r\n |] :\u0026gt; obj\r\n \u0026quot;main.Orders\u0026quot;,\r\n [| {| CustomerID = \u0026quot;1\u0026quot;; OrderDate = DateTime(2020,01,01); ShippedDate = DateTime(2020,01,04); Freight = 4m;|}\r\n {| CustomerID = \u0026quot;1\u0026quot;; OrderDate = DateTime(2021,02,11); ShippedDate = DateTime(2021,02,12); Freight = 22m;|}\r\n {| CustomerID = \u0026quot;2\u0026quot;; OrderDate = DateTime(2022,03,15); ShippedDate = DateTime(2022,03,22); Freight = 20m;|}\r\n {| CustomerID = \u0026quot;2\u0026quot;; OrderDate = DateTime(2024,02,03); ShippedDate = DateTime(2024,02,17); Freight = 50m;|}\r\n {| CustomerID = \u0026quot;3\u0026quot;; OrderDate = DateTime(2024,02,03); ShippedDate = DateTime(2024,02,17); Freight = 15m;|}\r\n |] :\u0026gt; obj\r\n\r\n ] |\u0026gt; Map.ofList\r\n let mockContext = FSharp.Data.Sql.Common.OfflineTools.CreateMockSqlDataContext\u0026lt;sql.dataContext\u0026gt; sampleDataMap\r\n\r\n let! res = someProductionFunction mockContext OrderDateFilter.OrderDate (DateTime(2024,02,04))\r\n //val res: (string * decimal) list =\r\n // [(\u0026quot;75000\u0026quot;, 22M); (\u0026quot;E143AB\u0026quot;, 20M); (\u0026quot;E143AB\u0026quot;, 50M)] \r\n\r\n assert_equal 3 res.Length\r\n assert_contains (\u0026quot;75000\u0026quot;, 22M) res\r\n assert_contains (\u0026quot;E143AB\u0026quot;, 20M) res\r\n assert_contains (\u0026quot;E143AB\u0026quot;, 50M) res\r\n }\r\n\r\nCreateMockSqlDataContext takes a Map\u0026lt;string,obj\u0026gt; where the string is the table name as in the database, and obj is an array of anonymous records.\r\nThe mock is meant to help create data-context objects to enable easier testing of your LINQ-logic, not to test SQLProvider itself.\r\nThere are some limitations with the SQLProvider mock a DB-context:\r\n\r\nThe mock-context will not connect the DB, and you can\u0027t save entity modifications. SubmitUpdates() will do nothing.\r\nSQLProvider custom operators (like x |=| xs and y %\u0026lt;\u0026gt; \u0022A%\u0022) are not supported. So you have to use LINQ-ones (e.g. xs.Contains x and not y.StartsWith \u0022A\u0022) that do work in SQLProvider as well.\r\nYou can call database-table .Create methods to create new instances (it doesn\u0027t connect the database). You can call update entity columns x.Col \u0026lt;- Some \u0022hi\u0022, but it doesn\u0027t really do anything.\r\nYou cannot call stored procedures.\r\nNames are database names, and they are case-sensitive. If you miss a table, in your mock, there will be a clear error. If you mistyped the anonymous record column name, you will probably just get a zero-result or ValueNone.Value-error or some other unwanted behaviour.\r\n\r\nIf you are running an off-line solution like SSDT or ContextSchemaPath, you should be able to run also these unit-tests with your CI.\r\n","headings":["SQLProvider allows you to unit-test your SQL-logic","Why to unit-test?","How?","Example: executable business logic","Example, unit-test part"],"type":"content"}] \ No newline at end of file +[{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql.html","title":"FSharp.Data.Sql","content":"Array \nAsyncOperations \nColumnSchema \nDataTable \nList \nOperators \nQuotationHelpers \nSeq \nAggregateOperation \nConditionOperator \nSelectOperations \nSqlDataProvider","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common.html","title":"FSharp.Data.Sql.Common","content":"Bytes \nConfigHelpers \nOfflineTools \nQueryEvents \nSql \nStandardExtensions \nStubs \nCaseSensitivityChange \nDatabaseProviderTypes \nEntityState \nGroupData \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E \nISqlDataContext \nIWithDataContext \nLinkData \nMappedColumnAttribute \nNullableColumnType \nOdbcQuoteCharacter \nOnConflict \nRelationshipDirection \nResultSet \nReturnSetType \nReturnValueType \nSQLiteLibrary \nSelectData \nSqlEntity \nUnionType \ntable","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers.html","title":"FSharp.Data.Sql.Providers","content":"DuckDb \nFirebird \nMSSqlServer \nMSSqlServerDynamic \nMSSqlServerSsdt \nMySql \nPostgreSQL","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime.html","title":"FSharp.Data.Sql.Runtime","content":"Seq \nCastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E \nSqlDataContext","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema.html","title":"FSharp.Data.Sql.Schema","content":"Column \nColumnLookup \nCompileTimePackageDefinition \nCompileTimeSprocDefinition \nQueryParameter \nRelationship \nRunTimeSprocDefinition \nSproc \nSprocName \nTable \nTypeMapping","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt.html","title":"FSharp.Data.Sql.Ssdt","content":"DacpacParser","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions.html","title":"FSharp.Data.Sql.Transactions","content":"IsolationLevel \nTransactionOptions","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/global.html","title":"global","content":"ExpressionOptimizer","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-array.html","title":"Array","content":"Array \n \nArray.executeQueryAsync \nexecuteQueryAsync","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-array.html#executeQueryAsync","title":"Array.executeQueryAsync","content":"Array.executeQueryAsync \nexecuteQueryAsync \n Execute SQLProvider query and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-asyncoperations.html","title":"AsyncOperations","content":"AsyncOperations \n \nAsyncOperations.executeAsync \nexecuteAsync \nAsyncOperations.getTryHeadAsync \ngetTryHeadAsync \nAsyncOperations.getHeadAsync \ngetHeadAsync \nAsyncOperations.getExactlyOneAsync \ngetExactlyOneAsync \nAsyncOperations.getTryExactlyOneAsync \ngetTryExactlyOneAsync \nAsyncOperations.getCountAsync \ngetCountAsync \nAsyncOperations.getAggAsync \ngetAggAsync","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-asyncoperations.html#executeAsync","title":"AsyncOperations.executeAsync","content":"AsyncOperations.executeAsync \nexecuteAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-asyncoperations.html#getTryHeadAsync","title":"AsyncOperations.getTryHeadAsync","content":"AsyncOperations.getTryHeadAsync \ngetTryHeadAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-asyncoperations.html#getHeadAsync","title":"AsyncOperations.getHeadAsync","content":"AsyncOperations.getHeadAsync \ngetHeadAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-asyncoperations.html#getExactlyOneAsync","title":"AsyncOperations.getExactlyOneAsync","content":"AsyncOperations.getExactlyOneAsync \ngetExactlyOneAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-asyncoperations.html#getTryExactlyOneAsync","title":"AsyncOperations.getTryExactlyOneAsync","content":"AsyncOperations.getTryExactlyOneAsync \ngetTryExactlyOneAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-asyncoperations.html#getCountAsync","title":"AsyncOperations.getCountAsync","content":"AsyncOperations.getCountAsync \ngetCountAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-asyncoperations.html#getAggAsync","title":"AsyncOperations.getAggAsync","content":"AsyncOperations.getAggAsync \ngetAggAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema.html","title":"ColumnSchema","content":"ColumnSchema \n \nColumnSchema.CanonicalOp \nCanonicalOp \nColumnSchema.Condition \nCondition \nColumnSchema.ProjectionParameter \nProjectionParameter \nColumnSchema.SqlColumnType \nSqlColumnType \nColumnSchema.SqlItemOrColumn \nSqlItemOrColumn \nColumnSchema.alias \nalias","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html","title":"CanonicalOp","content":"CanonicalOp \n \nCanonicalOp.Substring \nSubstring \nCanonicalOp.SubstringWithLength \nSubstringWithLength \nCanonicalOp.ToUpper \nToUpper \nCanonicalOp.ToLower \nToLower \nCanonicalOp.Trim \nTrim \nCanonicalOp.Length \nLength \nCanonicalOp.Replace \nReplace \nCanonicalOp.IndexOf \nIndexOf \nCanonicalOp.IndexOfStart \nIndexOfStart \nCanonicalOp.Date \nDate \nCanonicalOp.Year \nYear \nCanonicalOp.Month \nMonth \nCanonicalOp.Day \nDay \nCanonicalOp.Hour \nHour \nCanonicalOp.Minute \nMinute \nCanonicalOp.Second \nSecond \nCanonicalOp.AddYears \nAddYears \nCanonicalOp.AddMonths \nAddMonths \nCanonicalOp.AddDays \nAddDays \nCanonicalOp.AddHours \nAddHours \nCanonicalOp.AddMinutes \nAddMinutes \nCanonicalOp.AddSeconds \nAddSeconds \nCanonicalOp.DateDiffDays \nDateDiffDays \nCanonicalOp.DateDiffSecs \nDateDiffSecs \nCanonicalOp.Abs \nAbs \nCanonicalOp.Ceil \nCeil \nCanonicalOp.Floor \nFloor \nCanonicalOp.Round \nRound \nCanonicalOp.RoundDecimals \nRoundDecimals \nCanonicalOp.Truncate \nTruncate \nCanonicalOp.Sqrt \nSqrt \nCanonicalOp.Sin \nSin \nCanonicalOp.Cos \nCos \nCanonicalOp.Tan \nTan \nCanonicalOp.ASin \nASin \nCanonicalOp.ACos \nACos \nCanonicalOp.ATan \nATan \nCanonicalOp.Pow \nPow \nCanonicalOp.PowConst \nPowConst \nCanonicalOp.Greatest \nGreatest \nCanonicalOp.Least \nLeast \nCanonicalOp.BasicMath \nBasicMath \nCanonicalOp.BasicMathLeft \nBasicMathLeft \nCanonicalOp.BasicMathOfColumns \nBasicMathOfColumns \nCanonicalOp.CaseSql \nCaseSql \nCanonicalOp.CaseNotSql \nCaseNotSql \nCanonicalOp.CaseSqlPlain \nCaseSqlPlain \nCanonicalOp.CastVarchar \nCastVarchar \nCanonicalOp.CastInt \nCastInt","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Substring","title":"CanonicalOp.Substring","content":"CanonicalOp.Substring \nSubstring \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#SubstringWithLength","title":"CanonicalOp.SubstringWithLength","content":"CanonicalOp.SubstringWithLength \nSubstringWithLength \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#ToUpper","title":"CanonicalOp.ToUpper","content":"CanonicalOp.ToUpper \nToUpper \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#ToLower","title":"CanonicalOp.ToLower","content":"CanonicalOp.ToLower \nToLower \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Trim","title":"CanonicalOp.Trim","content":"CanonicalOp.Trim \nTrim \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Length","title":"CanonicalOp.Length","content":"CanonicalOp.Length \nLength \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Replace","title":"CanonicalOp.Replace","content":"CanonicalOp.Replace \nReplace \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IndexOf","title":"CanonicalOp.IndexOf","content":"CanonicalOp.IndexOf \nIndexOf \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#IndexOfStart","title":"CanonicalOp.IndexOfStart","content":"CanonicalOp.IndexOfStart \nIndexOfStart \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Date","title":"CanonicalOp.Date","content":"CanonicalOp.Date \nDate \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Year","title":"CanonicalOp.Year","content":"CanonicalOp.Year \nYear \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Month","title":"CanonicalOp.Month","content":"CanonicalOp.Month \nMonth \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Day","title":"CanonicalOp.Day","content":"CanonicalOp.Day \nDay \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Hour","title":"CanonicalOp.Hour","content":"CanonicalOp.Hour \nHour \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Minute","title":"CanonicalOp.Minute","content":"CanonicalOp.Minute \nMinute \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Second","title":"CanonicalOp.Second","content":"CanonicalOp.Second \nSecond \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#AddYears","title":"CanonicalOp.AddYears","content":"CanonicalOp.AddYears \nAddYears \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#AddMonths","title":"CanonicalOp.AddMonths","content":"CanonicalOp.AddMonths \nAddMonths \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#AddDays","title":"CanonicalOp.AddDays","content":"CanonicalOp.AddDays \nAddDays \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#AddHours","title":"CanonicalOp.AddHours","content":"CanonicalOp.AddHours \nAddHours \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#AddMinutes","title":"CanonicalOp.AddMinutes","content":"CanonicalOp.AddMinutes \nAddMinutes \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#AddSeconds","title":"CanonicalOp.AddSeconds","content":"CanonicalOp.AddSeconds \nAddSeconds \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#DateDiffDays","title":"CanonicalOp.DateDiffDays","content":"CanonicalOp.DateDiffDays \nDateDiffDays \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#DateDiffSecs","title":"CanonicalOp.DateDiffSecs","content":"CanonicalOp.DateDiffSecs \nDateDiffSecs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Abs","title":"CanonicalOp.Abs","content":"CanonicalOp.Abs \nAbs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Ceil","title":"CanonicalOp.Ceil","content":"CanonicalOp.Ceil \nCeil \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Floor","title":"CanonicalOp.Floor","content":"CanonicalOp.Floor \nFloor \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Round","title":"CanonicalOp.Round","content":"CanonicalOp.Round \nRound \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#RoundDecimals","title":"CanonicalOp.RoundDecimals","content":"CanonicalOp.RoundDecimals \nRoundDecimals \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Truncate","title":"CanonicalOp.Truncate","content":"CanonicalOp.Truncate \nTruncate \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Sqrt","title":"CanonicalOp.Sqrt","content":"CanonicalOp.Sqrt \nSqrt \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Sin","title":"CanonicalOp.Sin","content":"CanonicalOp.Sin \nSin \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Cos","title":"CanonicalOp.Cos","content":"CanonicalOp.Cos \nCos \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Tan","title":"CanonicalOp.Tan","content":"CanonicalOp.Tan \nTan \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#ASin","title":"CanonicalOp.ASin","content":"CanonicalOp.ASin \nASin \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#ACos","title":"CanonicalOp.ACos","content":"CanonicalOp.ACos \nACos \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#ATan","title":"CanonicalOp.ATan","content":"CanonicalOp.ATan \nATan \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Pow","title":"CanonicalOp.Pow","content":"CanonicalOp.Pow \nPow \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#PowConst","title":"CanonicalOp.PowConst","content":"CanonicalOp.PowConst \nPowConst \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Greatest","title":"CanonicalOp.Greatest","content":"CanonicalOp.Greatest \nGreatest \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#Least","title":"CanonicalOp.Least","content":"CanonicalOp.Least \nLeast \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#BasicMath","title":"CanonicalOp.BasicMath","content":"CanonicalOp.BasicMath \nBasicMath \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#BasicMathLeft","title":"CanonicalOp.BasicMathLeft","content":"CanonicalOp.BasicMathLeft \nBasicMathLeft \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#BasicMathOfColumns","title":"CanonicalOp.BasicMathOfColumns","content":"CanonicalOp.BasicMathOfColumns \nBasicMathOfColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#CaseSql","title":"CanonicalOp.CaseSql","content":"CanonicalOp.CaseSql \nCaseSql \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#CaseNotSql","title":"CanonicalOp.CaseNotSql","content":"CanonicalOp.CaseNotSql \nCaseNotSql \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#CaseSqlPlain","title":"CanonicalOp.CaseSqlPlain","content":"CanonicalOp.CaseSqlPlain \nCaseSqlPlain \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#CastVarchar","title":"CanonicalOp.CastVarchar","content":"CanonicalOp.CastVarchar \nCastVarchar \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-canonicalop.html#CastInt","title":"CanonicalOp.CastInt","content":"CanonicalOp.CastInt \nCastInt \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html","title":"Condition","content":"Condition \n \nCondition.And \nAnd \nCondition.Or \nOr \nCondition.ConstantTrue \nConstantTrue \nCondition.ConstantFalse \nConstantFalse \nCondition.NotSupported \nNotSupported","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html#And","title":"Condition.And","content":"Condition.And \nAnd \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html#Or","title":"Condition.Or","content":"Condition.Or \nOr \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html#ConstantTrue","title":"Condition.ConstantTrue","content":"Condition.ConstantTrue \nConstantTrue \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html#ConstantFalse","title":"Condition.ConstantFalse","content":"Condition.ConstantFalse \nConstantFalse \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-condition.html#NotSupported","title":"Condition.NotSupported","content":"Condition.NotSupported \nNotSupported \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-projectionparameter.html","title":"ProjectionParameter","content":"ProjectionParameter \n \nProjectionParameter.EntityColumn \nEntityColumn \nProjectionParameter.OperationColumn \nOperationColumn","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-projectionparameter.html#EntityColumn","title":"ProjectionParameter.EntityColumn","content":"ProjectionParameter.EntityColumn \nEntityColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-projectionparameter.html#OperationColumn","title":"ProjectionParameter.OperationColumn","content":"ProjectionParameter.OperationColumn \nOperationColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlcolumntype.html","title":"SqlColumnType","content":"SqlColumnType \n \nSqlColumnType.KeyColumn \nKeyColumn \nSqlColumnType.CanonicalOperation \nCanonicalOperation \nSqlColumnType.GroupColumn \nGroupColumn","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlcolumntype.html#KeyColumn","title":"SqlColumnType.KeyColumn","content":"SqlColumnType.KeyColumn \nKeyColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlcolumntype.html#CanonicalOperation","title":"SqlColumnType.CanonicalOperation","content":"SqlColumnType.CanonicalOperation \nCanonicalOperation \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlcolumntype.html#GroupColumn","title":"SqlColumnType.GroupColumn","content":"SqlColumnType.GroupColumn \nGroupColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlitemorcolumn.html","title":"SqlItemOrColumn","content":"SqlItemOrColumn \n \nSqlItemOrColumn.SqlCol \nSqlCol \nSqlItemOrColumn.SqlConstant \nSqlConstant","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlitemorcolumn.html#SqlCol","title":"SqlItemOrColumn.SqlCol","content":"SqlItemOrColumn.SqlCol \nSqlCol \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-sqlitemorcolumn.html#SqlConstant","title":"SqlItemOrColumn.SqlConstant","content":"SqlItemOrColumn.SqlConstant \nSqlConstant \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-alias.html","title":"alias","content":"alias \n \nalias.Chars \nChars \nalias.Length \nLength","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-alias.html#Chars","title":"alias.Chars","content":"alias.Chars \nChars \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-columnschema-alias.html#Length","title":"alias.Length","content":"alias.Length \nLength \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html","title":"DataTable","content":"DataTable \n \nDataTable.map \nmap \nDataTable.iter \niter \nDataTable.toList \ntoList \nDataTable.groupBy \ngroupBy \nDataTable.cache \ncache \nDataTable.mapChoose \nmapChoose \nDataTable.choose \nchoose \nDataTable.filter \nfilter \nDataTable.headers \nheaders \nDataTable.printDataTable \nprintDataTable","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#map","title":"DataTable.map","content":"DataTable.map \nmap \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#iter","title":"DataTable.iter","content":"DataTable.iter \niter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#toList","title":"DataTable.toList","content":"DataTable.toList \ntoList \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#groupBy","title":"DataTable.groupBy","content":"DataTable.groupBy \ngroupBy \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#cache","title":"DataTable.cache","content":"DataTable.cache \ncache \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#mapChoose","title":"DataTable.mapChoose","content":"DataTable.mapChoose \nmapChoose \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#choose","title":"DataTable.choose","content":"DataTable.choose \nchoose \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#filter","title":"DataTable.filter","content":"DataTable.filter \nfilter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#headers","title":"DataTable.headers","content":"DataTable.headers \nheaders \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-datatable.html#printDataTable","title":"DataTable.printDataTable","content":"DataTable.printDataTable \nprintDataTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-list.html","title":"List","content":"List \n \nList.evaluateOneByOne \nevaluateOneByOne \nList.executeQueryAsync \nexecuteQueryAsync","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-list.html#evaluateOneByOne","title":"List.evaluateOneByOne","content":"List.evaluateOneByOne \nevaluateOneByOne \n Helper function to run async computation non-parallel style for list of objects.\n This is needed if async database opreation is executed for a list of entities.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-list.html#executeQueryAsync","title":"List.executeQueryAsync","content":"List.executeQueryAsync \nexecuteQueryAsync \n Execute SQLProvider query and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-operators.html","title":"Operators","content":"Operators \n \nOperators.(|=|) \n(|=|) \nOperators.(|\u003C\u003E|) \n(|\u003C\u003E|) \nOperators.(=%) \n(=%) \nOperators.(\u003C\u003E%) \n(\u003C\u003E%) \nOperators.(!!) \n(!!) \nOperators.StdDev \nStdDev \nOperators.Variance \nVariance","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-operators.html#(|=|)","title":"Operators.(|=|)","content":"Operators.(|=|) \n(|=|) \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-operators.html#(|\u003C\u003E|)","title":"Operators.(|\u003C\u003E|)","content":"Operators.(|\u003C\u003E|) \n(|\u003C\u003E|) \n Not In","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-operators.html#(=%)","title":"Operators.(=%)","content":"Operators.(=%) \n(=%) \n Like","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-operators.html#(\u003C\u003E%)","title":"Operators.(\u003C\u003E%)","content":"Operators.(\u003C\u003E%) \n(\u003C\u003E%) \n Not Like","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-operators.html#(!!)","title":"Operators.(!!)","content":"Operators.(!!) \n(!!) \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-operators.html#StdDev","title":"Operators.StdDev","content":"Operators.StdDev \nStdDev \n Standard Deviation","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-operators.html#Variance","title":"Operators.Variance","content":"Operators.Variance \nVariance \n Variance","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html","title":"QuotationHelpers","content":"QuotationHelpers \n \nQuotationHelpers.coerceValues \ncoerceValues \nQuotationHelpers.simpleTypeExpr \nsimpleTypeExpr \nQuotationHelpers.unionExpr \nunionExpr \nQuotationHelpers.recordExpr \nrecordExpr \nQuotationHelpers.arrayExpr \narrayExpr \nQuotationHelpers.quoteUnion \nquoteUnion \nQuotationHelpers.quoteRecord \nquoteRecord \nQuotationHelpers.quoteArray \nquoteArray","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html#coerceValues","title":"QuotationHelpers.coerceValues","content":"QuotationHelpers.coerceValues \ncoerceValues \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html#simpleTypeExpr","title":"QuotationHelpers.simpleTypeExpr","content":"QuotationHelpers.simpleTypeExpr \nsimpleTypeExpr \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html#unionExpr","title":"QuotationHelpers.unionExpr","content":"QuotationHelpers.unionExpr \nunionExpr \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html#recordExpr","title":"QuotationHelpers.recordExpr","content":"QuotationHelpers.recordExpr \nrecordExpr \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html#arrayExpr","title":"QuotationHelpers.arrayExpr","content":"QuotationHelpers.arrayExpr \narrayExpr \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html#quoteUnion","title":"QuotationHelpers.quoteUnion","content":"QuotationHelpers.quoteUnion \nquoteUnion \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html#quoteRecord","title":"QuotationHelpers.quoteRecord","content":"QuotationHelpers.quoteRecord \nquoteRecord \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-quotationhelpers.html#quoteArray","title":"QuotationHelpers.quoteArray","content":"QuotationHelpers.quoteArray \nquoteArray \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html","title":"Seq","content":"Seq \n \nSeq.executeQueryAsync \nexecuteQueryAsync \nSeq.lengthAsync \nlengthAsync \nSeq.headAsync \nheadAsync \nSeq.tryHeadAsync \ntryHeadAsync \nSeq.sumAsync \nsumAsync \nSeq.maxAsync \nmaxAsync \nSeq.minAsync \nminAsync \nSeq.averageAsync \naverageAsync \nSeq.stdDevAsync \nstdDevAsync \nSeq.varianceAsync \nvarianceAsync \nSeq.\u0060\u0060delete all items from single table\u0060\u0060 \n\u0060\u0060delete all items from single table\u0060\u0060 \nSeq.exactlyOneAsync \nexactlyOneAsync \nSeq.tryExactlyOneAsync \ntryExactlyOneAsync","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#executeQueryAsync","title":"Seq.executeQueryAsync","content":"Seq.executeQueryAsync \nexecuteQueryAsync \n Execute SQLProvider query and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#lengthAsync","title":"Seq.lengthAsync","content":"Seq.lengthAsync \nlengthAsync \n Execute SQLProvider query to count the elements, and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#headAsync","title":"Seq.headAsync","content":"Seq.headAsync \nheadAsync \n Execute SQLProvider query to take one result and release the OS thread while query is being executed.\n Like normal head: Throws exception if no elements exists. See also tryHeadAsync.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#tryHeadAsync","title":"Seq.tryHeadAsync","content":"Seq.tryHeadAsync \ntryHeadAsync \n Execute SQLProvider query to take one result and release the OS thread while query is being executed.\n Returns None if no elements exists.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#sumAsync","title":"Seq.sumAsync","content":"Seq.sumAsync \nsumAsync \n Execute SQLProvider query to get the sum of elements, and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#maxAsync","title":"Seq.maxAsync","content":"Seq.maxAsync \nmaxAsync \n Execute SQLProvider query to get the max of elements, and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#minAsync","title":"Seq.minAsync","content":"Seq.minAsync \nminAsync \n Execute SQLProvider query to get the min of elements, and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#averageAsync","title":"Seq.averageAsync","content":"Seq.averageAsync \naverageAsync \n Execute SQLProvider query to get the avg of elements, and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#stdDevAsync","title":"Seq.stdDevAsync","content":"Seq.stdDevAsync \nstdDevAsync \n Execute SQLProvider query to get the standard deviation of elements, and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#varianceAsync","title":"Seq.varianceAsync","content":"Seq.varianceAsync \nvarianceAsync \n Execute SQLProvider query to get the variance of elements, and release the OS thread while query is being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#\u0060\u0060delete all items from single table\u0060\u0060","title":"Seq.\u0060\u0060delete all items from single table\u0060\u0060","content":"Seq.\u0060\u0060delete all items from single table\u0060\u0060 \n\u0060\u0060delete all items from single table\u0060\u0060 \n WARNING! Execute SQLProvider DELETE FROM query to remove elements from the database.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#exactlyOneAsync","title":"Seq.exactlyOneAsync","content":"Seq.exactlyOneAsync \nexactlyOneAsync \n Execute SQLProvider query to get the only element of the sequence.\n Throws \u0060ArgumentNullException\u0060 if the seq is empty.\n Throws \u0060ArgumentException\u0060 if the seq contains more than one element.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-seq.html#tryExactlyOneAsync","title":"Seq.tryExactlyOneAsync","content":"Seq.tryExactlyOneAsync \ntryExactlyOneAsync \n Execute SQLProvider query to get the only element of the sequence.\n Returns \u0060None\u0060 if there are zero or more than one element in the seq.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html","title":"AggregateOperation","content":"AggregateOperation \n \nAggregateOperation.KeyOp \nKeyOp \nAggregateOperation.MaxOp \nMaxOp \nAggregateOperation.MinOp \nMinOp \nAggregateOperation.SumOp \nSumOp \nAggregateOperation.AvgOp \nAvgOp \nAggregateOperation.CountOp \nCountOp \nAggregateOperation.CountDistOp \nCountDistOp \nAggregateOperation.StdDevOp \nStdDevOp \nAggregateOperation.VarianceOp \nVarianceOp","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#KeyOp","title":"AggregateOperation.KeyOp","content":"AggregateOperation.KeyOp \nKeyOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#MaxOp","title":"AggregateOperation.MaxOp","content":"AggregateOperation.MaxOp \nMaxOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#MinOp","title":"AggregateOperation.MinOp","content":"AggregateOperation.MinOp \nMinOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#SumOp","title":"AggregateOperation.SumOp","content":"AggregateOperation.SumOp \nSumOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#AvgOp","title":"AggregateOperation.AvgOp","content":"AggregateOperation.AvgOp \nAvgOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#CountOp","title":"AggregateOperation.CountOp","content":"AggregateOperation.CountOp \nCountOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#CountDistOp","title":"AggregateOperation.CountDistOp","content":"AggregateOperation.CountDistOp \nCountDistOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#StdDevOp","title":"AggregateOperation.StdDevOp","content":"AggregateOperation.StdDevOp \nStdDevOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-aggregateoperation.html#VarianceOp","title":"AggregateOperation.VarianceOp","content":"AggregateOperation.VarianceOp \nVarianceOp \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html","title":"ConditionOperator","content":"ConditionOperator \n \nConditionOperator.Like \nLike \nConditionOperator.NotLike \nNotLike \nConditionOperator.Equal \nEqual \nConditionOperator.NotEqual \nNotEqual \nConditionOperator.GreaterThan \nGreaterThan \nConditionOperator.LessThan \nLessThan \nConditionOperator.GreaterEqual \nGreaterEqual \nConditionOperator.LessEqual \nLessEqual \nConditionOperator.IsNull \nIsNull \nConditionOperator.NotNull \nNotNull \nConditionOperator.In \nIn \nConditionOperator.NotIn \nNotIn \nConditionOperator.NestedIn \nNestedIn \nConditionOperator.NestedNotIn \nNestedNotIn \nConditionOperator.NestedExists \nNestedExists \nConditionOperator.NestedNotExists \nNestedNotExists","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#Like","title":"ConditionOperator.Like","content":"ConditionOperator.Like \nLike \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#NotLike","title":"ConditionOperator.NotLike","content":"ConditionOperator.NotLike \nNotLike \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#Equal","title":"ConditionOperator.Equal","content":"ConditionOperator.Equal \nEqual \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#NotEqual","title":"ConditionOperator.NotEqual","content":"ConditionOperator.NotEqual \nNotEqual \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#GreaterThan","title":"ConditionOperator.GreaterThan","content":"ConditionOperator.GreaterThan \nGreaterThan \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#LessThan","title":"ConditionOperator.LessThan","content":"ConditionOperator.LessThan \nLessThan \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#GreaterEqual","title":"ConditionOperator.GreaterEqual","content":"ConditionOperator.GreaterEqual \nGreaterEqual \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#LessEqual","title":"ConditionOperator.LessEqual","content":"ConditionOperator.LessEqual \nLessEqual \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#IsNull","title":"ConditionOperator.IsNull","content":"ConditionOperator.IsNull \nIsNull \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#NotNull","title":"ConditionOperator.NotNull","content":"ConditionOperator.NotNull \nNotNull \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#In","title":"ConditionOperator.In","content":"ConditionOperator.In \nIn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#NotIn","title":"ConditionOperator.NotIn","content":"ConditionOperator.NotIn \nNotIn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#NestedIn","title":"ConditionOperator.NestedIn","content":"ConditionOperator.NestedIn \nNestedIn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#NestedNotIn","title":"ConditionOperator.NestedNotIn","content":"ConditionOperator.NestedNotIn \nNestedNotIn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#NestedExists","title":"ConditionOperator.NestedExists","content":"ConditionOperator.NestedExists \nNestedExists \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-conditionoperator.html#NestedNotExists","title":"ConditionOperator.NestedNotExists","content":"ConditionOperator.NestedNotExists \nNestedNotExists \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-selectoperations.html","title":"SelectOperations","content":"SelectOperations \n \nSelectOperations.DotNetSide \nDotNetSide \nSelectOperations.DatabaseSide \nDatabaseSide","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-selectoperations.html#DotNetSide","title":"SelectOperations.DotNetSide","content":"SelectOperations.DotNetSide \nDotNetSide \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-selectoperations.html#DatabaseSide","title":"SelectOperations.DatabaseSide","content":"SelectOperations.DatabaseSide \nDatabaseSide \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html","title":"SqlDataProvider","content":"SqlDataProvider \nTyped representation of a database \nSqlDataProvider.DatabaseVendor \nDatabaseVendor \nSqlDataProvider.ConnectionString \nConnectionString \nSqlDataProvider.ConnectionStringName \nConnectionStringName \nSqlDataProvider.ResolutionPath \nResolutionPath \nSqlDataProvider.IndividualsAmount \nIndividualsAmount \nSqlDataProvider.UseOptionTypes \nUseOptionTypes \nSqlDataProvider.Owner \nOwner \nSqlDataProvider.CaseSensitivityChange \nCaseSensitivityChange \nSqlDataProvider.TableNames \nTableNames \nSqlDataProvider.ContextSchemaPath \nContextSchemaPath \nSqlDataProvider.OdbcQuote \nOdbcQuote \nSqlDataProvider.SQLiteLibrary \nSQLiteLibrary \nSqlDataProvider.SsdtPath \nSsdtPath","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#DatabaseVendor","title":"SqlDataProvider.DatabaseVendor","content":"SqlDataProvider.DatabaseVendor \nDatabaseVendor \n The target database vendor","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#ConnectionString","title":"SqlDataProvider.ConnectionString","content":"SqlDataProvider.ConnectionString \nConnectionString \nThe connection string for the SQL database","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#ConnectionStringName","title":"SqlDataProvider.ConnectionStringName","content":"SqlDataProvider.ConnectionStringName \nConnectionStringName \nThe connection string name to select from a configuration file","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#ResolutionPath","title":"SqlDataProvider.ResolutionPath","content":"SqlDataProvider.ResolutionPath \nResolutionPath \nThe location to look for dynamically loaded assemblies containing database vendor specific connections and custom types. Types used in desing-time: If no better clue, prefer .NET Standard 2.0 versions. Semicolon to separate multiple.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#IndividualsAmount","title":"SqlDataProvider.IndividualsAmount","content":"SqlDataProvider.IndividualsAmount \nIndividualsAmount \nThe amount of sample entities to project into the type system for each SQL entity type. Default 50. Note GDPR/PII regulations if using individuals with ContextSchemaPath.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#UseOptionTypes","title":"SqlDataProvider.UseOptionTypes","content":"SqlDataProvider.UseOptionTypes \nUseOptionTypes \nIf set, F# option types will be used in place of nullable database columns. If not, you will always receive the default value of the column\u0027s type even if it is null in the database.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#Owner","title":"SqlDataProvider.Owner","content":"SqlDataProvider.Owner \nOwner \nOracle: The owner of the schema for this provider to resolve. PostgreSQL: A list of schemas to resolve, separated by spaces, newlines, commas, or semicolons.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#CaseSensitivityChange","title":"SqlDataProvider.CaseSensitivityChange","content":"SqlDataProvider.CaseSensitivityChange \nCaseSensitivityChange \nShould we do ToUpper or ToLower when generating table names?","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#TableNames","title":"SqlDataProvider.TableNames","content":"SqlDataProvider.TableNames \nTableNames \nComma separated table names list to limit a number of tables in big instances. The names can have \u0027%\u0027 sign to handle it as in the \u0027LIKE\u0027 query (Oracle and MSSQL Only)","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#ContextSchemaPath","title":"SqlDataProvider.ContextSchemaPath","content":"SqlDataProvider.ContextSchemaPath \nContextSchemaPath \nThe location of the context schema previously saved with SaveContextSchema. When not empty, will be used to populate the database schema instead of retrieving it from then database.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#OdbcQuote","title":"SqlDataProvider.OdbcQuote","content":"SqlDataProvider.OdbcQuote \nOdbcQuote \nOdbc quote characters: Quote characters for the table and column names: \u0060alias\u0060, [alias]","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#SQLiteLibrary","title":"SqlDataProvider.SQLiteLibrary","content":"SqlDataProvider.SQLiteLibrary \nSQLiteLibrary \nUse System.Data.SQLite or Mono.Data.SQLite or select automatically (SQLite only)","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-sqldataprovider.html#SsdtPath","title":"SqlDataProvider.SsdtPath","content":"SqlDataProvider.SsdtPath \nSsdtPath \nA path to an SSDT .dacpac file.\u0027","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-bytes.html","title":"Bytes","content":"Bytes \n \nBytes.hash \nhash \nBytes.sha1 \nsha1 \nBytes.sha256 \nsha256","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-bytes.html#hash","title":"Bytes.hash","content":"Bytes.hash \nhash \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-bytes.html#sha1","title":"Bytes.sha1","content":"Bytes.sha1 \nsha1 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-bytes.html#sha256","title":"Bytes.sha256","content":"Bytes.sha256 \nsha256 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-confighelpers.html","title":"ConfigHelpers","content":"ConfigHelpers \n \nConfigHelpers.cachedConStrings \ncachedConStrings \nConfigHelpers.tryGetConnectionString \ntryGetConnectionString","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-confighelpers.html#cachedConStrings","title":"ConfigHelpers.cachedConStrings","content":"ConfigHelpers.cachedConStrings \ncachedConStrings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-confighelpers.html#tryGetConnectionString","title":"ConfigHelpers.tryGetConnectionString","content":"ConfigHelpers.tryGetConnectionString \ntryGetConnectionString \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-offlinetools.html","title":"OfflineTools","content":"OfflineTools \n \nOfflineTools.MockQueryable\u003C\u0027T\u003E \nMockQueryable\u003C\u0027T\u003E \nOfflineTools.mergeCacheFiles \nmergeCacheFiles \nOfflineTools.CreateMockEntities \nCreateMockEntities \nOfflineTools.CreateMockSqlDataContext \nCreateMockSqlDataContext","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-offlinetools.html#mergeCacheFiles","title":"OfflineTools.mergeCacheFiles","content":"OfflineTools.mergeCacheFiles \nmergeCacheFiles \n Merges two ContexSchemaPath offline schema files into one target schema file.\n This is a tool method that can be useful in multi-project solution using the same database with different tables.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-offlinetools.html#CreateMockEntities","title":"OfflineTools.CreateMockEntities","content":"OfflineTools.CreateMockEntities \nCreateMockEntities \n This can be used for testing. Creates de-attached entities..\n Example: FSharp.Data.Sql.Common.OfflineTools.CreateMockEntities \u0022MyTable1\u0022 [| {| MyColumn1 = \u0022a\u0022; MyColumn2 = 0 |} |]","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-offlinetools.html#CreateMockSqlDataContext","title":"OfflineTools.CreateMockSqlDataContext","content":"OfflineTools.CreateMockSqlDataContext \nCreateMockSqlDataContext \n This can be used for testing. Creates fake DB-context entities..\n Example: FSharp.Data.Sql.Common.OfflineTools.CreateMockSqlDataContext [\u0022schema.MyTable1\u0022; [| {| MyColumn1 = \u0022a\u0022; MyColumn2 = 0 |} |] :\u003E obj] |\u003E Map.ofList\n See project unit-test for more examples.\n NOTE: Case-sensitivity. Tables and columns are DB-names, not Linq-names.\n Limitation of mockContext: You cannot Create new entities to the mock context.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-offlinetools-mockqueryable-1.html","title":"MockQueryable\u003C\u0027T\u003E","content":"MockQueryable\u003C\u0027T\u003E \n \nMockQueryable\u003C\u0027T\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-offlinetools-mockqueryable-1.html#\u0060\u0060.ctor\u0060\u0060","title":"MockQueryable\u003C\u0027T\u003E.\u0060\u0060.ctor\u0060\u0060","content":"MockQueryable\u003C\u0027T\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents.html","title":"QueryEvents","content":"QueryEvents \n \nQueryEvents.SqlEventData \nSqlEventData \nQueryEvents.SqlQueryEvent \nSqlQueryEvent \nQueryEvents.LinqExpressionEvent \nLinqExpressionEvent","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents.html#SqlQueryEvent","title":"QueryEvents.SqlQueryEvent","content":"QueryEvents.SqlQueryEvent \nSqlQueryEvent \n This event fires immediately before the execution of every generated query. \n Listen to this event to display or debug the content of your queries.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents.html#LinqExpressionEvent","title":"QueryEvents.LinqExpressionEvent","content":"QueryEvents.LinqExpressionEvent \nLinqExpressionEvent \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents-sqleventdata.html","title":"SqlEventData","content":"SqlEventData \n \nSqlEventData.ToRawSql \nToRawSql \nSqlEventData.ToRawSqlWithParamInfo \nToRawSqlWithParamInfo \nSqlEventData.Command \nCommand \nSqlEventData.Parameters \nParameters \nSqlEventData.ConnectionStringHash \nConnectionStringHash","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents-sqleventdata.html#ToRawSql","title":"SqlEventData.ToRawSql","content":"SqlEventData.ToRawSql \nToRawSql \n Use this to execute similar queries to test the result of the executed query.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents-sqleventdata.html#ToRawSqlWithParamInfo","title":"SqlEventData.ToRawSqlWithParamInfo","content":"SqlEventData.ToRawSqlWithParamInfo \nToRawSqlWithParamInfo \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents-sqleventdata.html#Command","title":"SqlEventData.Command","content":"SqlEventData.Command \nCommand \n The text of the SQL command being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents-sqleventdata.html#Parameters","title":"SqlEventData.Parameters","content":"SqlEventData.Parameters \nParameters \n The parameters (if any) passed to the SQL command being executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-queryevents-sqleventdata.html#ConnectionStringHash","title":"SqlEventData.ConnectionStringHash","content":"SqlEventData.ConnectionStringHash \nConnectionStringHash \n The SHA256 hash of the UTF8-encoded connection string used to perform this command.\n Use this to determine on which database connection the command is going to be executed.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html","title":"Sql","content":"Sql \n \nSql.dataReaderToArray \ndataReaderToArray \nSql.dataReaderToArrayAsync \ndataReaderToArrayAsync \nSql.dbUnbox \ndbUnbox \nSql.dbUnboxWithDefault \ndbUnboxWithDefault \nSql.connect \nconnect \nSql.connectAsync \nconnectAsync \nSql.executeSql \nexecuteSql \nSql.executeSqlAsync \nexecuteSqlAsync \nSql.executeSqlAsDataTable \nexecuteSqlAsDataTable \nSql.executeSqlAsDataTableAsync \nexecuteSqlAsDataTableAsync \nSql.ensureOpen \nensureOpen \nSql.evaluateOneByOne \nevaluateOneByOne","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#dataReaderToArray","title":"Sql.dataReaderToArray","content":"Sql.dataReaderToArray \ndataReaderToArray \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#dataReaderToArrayAsync","title":"Sql.dataReaderToArrayAsync","content":"Sql.dataReaderToArrayAsync \ndataReaderToArrayAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#dbUnbox","title":"Sql.dbUnbox","content":"Sql.dbUnbox \ndbUnbox \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#dbUnboxWithDefault","title":"Sql.dbUnboxWithDefault","content":"Sql.dbUnboxWithDefault \ndbUnboxWithDefault \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#connect","title":"Sql.connect","content":"Sql.connect \nconnect \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#connectAsync","title":"Sql.connectAsync","content":"Sql.connectAsync \nconnectAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#executeSql","title":"Sql.executeSql","content":"Sql.executeSql \nexecuteSql \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#executeSqlAsync","title":"Sql.executeSqlAsync","content":"Sql.executeSqlAsync \nexecuteSqlAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#executeSqlAsDataTable","title":"Sql.executeSqlAsDataTable","content":"Sql.executeSqlAsDataTable \nexecuteSqlAsDataTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#executeSqlAsDataTableAsync","title":"Sql.executeSqlAsDataTableAsync","content":"Sql.executeSqlAsDataTableAsync \nexecuteSqlAsDataTableAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#ensureOpen","title":"Sql.ensureOpen","content":"Sql.ensureOpen \nensureOpen \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sql.html#evaluateOneByOne","title":"Sql.evaluateOneByOne","content":"Sql.evaluateOneByOne \nevaluateOneByOne \n Helper function to run async computation non-parallel style for list of objects.\n This is needed if async database opreation is executed for a list of entities.\n DB-connections are not usually supporting parallel SQL-query execution, so even when\n async thread is available, it can\u0027t be used to execute another SQL at the same time.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-standardextensions.html","title":"StandardExtensions","content":"StandardExtensions \n \nStandardExtensions.AsEnumerable \nAsEnumerable","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-standardextensions.html#AsEnumerable","title":"StandardExtensions.AsEnumerable","content":"StandardExtensions.AsEnumerable \nAsEnumerable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-stubs.html","title":"Stubs","content":"Stubs \n \nStubs.connection \nconnection","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-stubs.html#connection","title":"Stubs.connection","content":"Stubs.connection \nconnection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-casesensitivitychange.html","title":"CaseSensitivityChange","content":"CaseSensitivityChange \n \nCaseSensitivityChange.ORIGINAL \nORIGINAL \nCaseSensitivityChange.TOUPPER \nTOUPPER \nCaseSensitivityChange.TOLOWER \nTOLOWER","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-casesensitivitychange.html#ORIGINAL","title":"CaseSensitivityChange.ORIGINAL","content":"CaseSensitivityChange.ORIGINAL \nORIGINAL \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-casesensitivitychange.html#TOUPPER","title":"CaseSensitivityChange.TOUPPER","content":"CaseSensitivityChange.TOUPPER \nTOUPPER \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-casesensitivitychange.html#TOLOWER","title":"CaseSensitivityChange.TOLOWER","content":"CaseSensitivityChange.TOLOWER \nTOLOWER \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html","title":"DatabaseProviderTypes","content":"DatabaseProviderTypes \n \nDatabaseProviderTypes.MSSQLSERVER \nMSSQLSERVER \nDatabaseProviderTypes.SQLITE \nSQLITE \nDatabaseProviderTypes.POSTGRESQL \nPOSTGRESQL \nDatabaseProviderTypes.MYSQL \nMYSQL \nDatabaseProviderTypes.ORACLE \nORACLE \nDatabaseProviderTypes.MSACCESS \nMSACCESS \nDatabaseProviderTypes.ODBC \nODBC \nDatabaseProviderTypes.FIREBIRD \nFIREBIRD \nDatabaseProviderTypes.MSSQLSERVER_DYNAMIC \nMSSQLSERVER_DYNAMIC \nDatabaseProviderTypes.MSSQLSERVER_SSDT \nMSSQLSERVER_SSDT \nDatabaseProviderTypes.DUCKDB \nDUCKDB","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#MSSQLSERVER","title":"DatabaseProviderTypes.MSSQLSERVER","content":"DatabaseProviderTypes.MSSQLSERVER \nMSSQLSERVER \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#SQLITE","title":"DatabaseProviderTypes.SQLITE","content":"DatabaseProviderTypes.SQLITE \nSQLITE \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#POSTGRESQL","title":"DatabaseProviderTypes.POSTGRESQL","content":"DatabaseProviderTypes.POSTGRESQL \nPOSTGRESQL \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#MYSQL","title":"DatabaseProviderTypes.MYSQL","content":"DatabaseProviderTypes.MYSQL \nMYSQL \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#ORACLE","title":"DatabaseProviderTypes.ORACLE","content":"DatabaseProviderTypes.ORACLE \nORACLE \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#MSACCESS","title":"DatabaseProviderTypes.MSACCESS","content":"DatabaseProviderTypes.MSACCESS \nMSACCESS \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#ODBC","title":"DatabaseProviderTypes.ODBC","content":"DatabaseProviderTypes.ODBC \nODBC \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#FIREBIRD","title":"DatabaseProviderTypes.FIREBIRD","content":"DatabaseProviderTypes.FIREBIRD \nFIREBIRD \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#MSSQLSERVER_DYNAMIC","title":"DatabaseProviderTypes.MSSQLSERVER_DYNAMIC","content":"DatabaseProviderTypes.MSSQLSERVER_DYNAMIC \nMSSQLSERVER_DYNAMIC \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#MSSQLSERVER_SSDT","title":"DatabaseProviderTypes.MSSQLSERVER_SSDT","content":"DatabaseProviderTypes.MSSQLSERVER_SSDT \nMSSQLSERVER_SSDT \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-databaseprovidertypes.html#DUCKDB","title":"DatabaseProviderTypes.DUCKDB","content":"DatabaseProviderTypes.DUCKDB \nDUCKDB \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html","title":"EntityState","content":"EntityState \n \nEntityState.Unchanged \nUnchanged \nEntityState.Created \nCreated \nEntityState.Modified \nModified \nEntityState.Delete \nDelete \nEntityState.Deleted \nDeleted","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html#Unchanged","title":"EntityState.Unchanged","content":"EntityState.Unchanged \nUnchanged \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html#Created","title":"EntityState.Created","content":"EntityState.Created \nCreated \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html#Modified","title":"EntityState.Modified","content":"EntityState.Modified \nModified \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html#Delete","title":"EntityState.Delete","content":"EntityState.Delete \nDelete \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-entitystate.html#Deleted","title":"EntityState.Deleted","content":"EntityState.Deleted \nDeleted \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupdata.html","title":"GroupData","content":"GroupData \n GroupData is for group-by projections \nGroupData.PrimaryTable \nPrimaryTable \nGroupData.KeyColumns \nKeyColumns \nGroupData.AggregateColumns \nAggregateColumns \nGroupData.Projection \nProjection","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupdata.html#PrimaryTable","title":"GroupData.PrimaryTable","content":"GroupData.PrimaryTable \nPrimaryTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupdata.html#KeyColumns","title":"GroupData.KeyColumns","content":"GroupData.KeyColumns \nKeyColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupdata.html#AggregateColumns","title":"GroupData.AggregateColumns","content":"GroupData.AggregateColumns \nAggregateColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupdata.html#Projection","title":"GroupData.Projection","content":"GroupData.Projection \nProjection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E \n GroupResultItems is an item to create key-igrouping-structure.\n From the select group-by projection, aggregate operations like Enumerable.Count() \n is replaced to GroupResultItems.AggregateCount call and this is used to fetch the \n SQL result instead of actually counting anything \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateAverage \nAggregateAverage \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateAvg \nAggregateAvg \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateCount \nAggregateCount \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateCountDistinct \nAggregateCountDistinct \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateMax \nAggregateMax \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateMin \nAggregateMin \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStDev \nAggregateStDev \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStandardDeviation \nAggregateStandardDeviation \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStdDev \nAggregateStdDev \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateSum \nAggregateSum \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateVariance \nAggregateVariance \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.Values \nValues \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.op_Implicit \nop_Implicit \nGroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.op_Implicit \nop_Implicit","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#\u0060\u0060.ctor\u0060\u0060","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#\u0060\u0060.ctor\u0060\u0060","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#\u0060\u0060.ctor\u0060\u0060","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#\u0060\u0060.ctor\u0060\u0060","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#\u0060\u0060.ctor\u0060\u0060","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#\u0060\u0060.ctor\u0060\u0060","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#\u0060\u0060.ctor\u0060\u0060","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateAverage","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateAverage","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateAverage \nAggregateAverage \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateAvg","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateAvg","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateAvg \nAggregateAvg \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateCount","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateCount","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateCount \nAggregateCount \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateCountDistinct","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateCountDistinct","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateCountDistinct \nAggregateCountDistinct \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateMax","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateMax","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateMax \nAggregateMax \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateMin","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateMin","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateMin \nAggregateMin \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateStDev","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStDev","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStDev \nAggregateStDev \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateStandardDeviation","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStandardDeviation","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStandardDeviation \nAggregateStandardDeviation \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateStdDev","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStdDev","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateStdDev \nAggregateStdDev \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateSum","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateSum","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateSum \nAggregateSum \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#AggregateVariance","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateVariance","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.AggregateVariance \nAggregateVariance \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#Values","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.Values","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.Values \nValues \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#op_Implicit","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.op_Implicit","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.op_Implicit \nop_Implicit \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-groupresultitems-2.html#op_Implicit","title":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.op_Implicit","content":"GroupResultItems\u003C\u0027key, \u0027SqlEntity\u003E.op_Implicit \nop_Implicit \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html","title":"ISqlDataContext","content":"ISqlDataContext \n \nISqlDataContext.CallSproc \nCallSproc \nISqlDataContext.CallSprocAsync \nCallSprocAsync \nISqlDataContext.ClearPendingChanges \nClearPendingChanges \nISqlDataContext.CreateConnection \nCreateConnection \nISqlDataContext.CreateEntities \nCreateEntities \nISqlDataContext.CreateEntity \nCreateEntity \nISqlDataContext.CreateRelated \nCreateRelated \nISqlDataContext.GetIndividual \nGetIndividual \nISqlDataContext.GetPendingEntities \nGetPendingEntities \nISqlDataContext.GetPrimaryKeyDefinition \nGetPrimaryKeyDefinition \nISqlDataContext.ReadEntities \nReadEntities \nISqlDataContext.ReadEntitiesAsync \nReadEntitiesAsync \nISqlDataContext.SaveContextSchema \nSaveContextSchema \nISqlDataContext.SubmitChangedEntity \nSubmitChangedEntity \nISqlDataContext.SubmitPendingChanges \nSubmitPendingChanges \nISqlDataContext.SubmitPendingChangesAsync \nSubmitPendingChangesAsync \nISqlDataContext.SqlOperationsInSelect \nSqlOperationsInSelect \nISqlDataContext.CommandTimeout \nCommandTimeout \nISqlDataContext.ConnectionString \nConnectionString","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#CallSproc","title":"ISqlDataContext.CallSproc","content":"ISqlDataContext.CallSproc \nCallSproc \n Call stored procedure: Definition, return columns, values. Returns result.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#CallSprocAsync","title":"ISqlDataContext.CallSprocAsync","content":"ISqlDataContext.CallSprocAsync \nCallSprocAsync \n Call stored procedure: Definition, return columns, values. Returns result task.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#ClearPendingChanges","title":"ISqlDataContext.ClearPendingChanges","content":"ISqlDataContext.ClearPendingChanges \nClearPendingChanges \n Remove changes that are in context.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#CreateConnection","title":"ISqlDataContext.CreateConnection","content":"ISqlDataContext.CreateConnection \nCreateConnection \n return a new, unopened connection using the provided connection string","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#CreateEntities","title":"ISqlDataContext.CreateEntities","content":"ISqlDataContext.CreateEntities \nCreateEntities \n Create entities for a table.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#CreateEntity","title":"ISqlDataContext.CreateEntity","content":"ISqlDataContext.CreateEntity \nCreateEntity \n Takes table-name. Returns new entity.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#CreateRelated","title":"ISqlDataContext.CreateRelated","content":"ISqlDataContext.CreateRelated \nCreateRelated \n CreateRelated: instance, _, primary_table, primary_key, foreing_Table, foreign_key, direction. Returns entities","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#GetIndividual","title":"ISqlDataContext.GetIndividual","content":"ISqlDataContext.GetIndividual \nGetIndividual \n Get individual row. Takes tablename and id.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#GetPendingEntities","title":"ISqlDataContext.GetPendingEntities","content":"ISqlDataContext.GetPendingEntities \nGetPendingEntities \n List changes that are in context.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#GetPrimaryKeyDefinition","title":"ISqlDataContext.GetPrimaryKeyDefinition","content":"ISqlDataContext.GetPrimaryKeyDefinition \nGetPrimaryKeyDefinition \n Give a tablename and this returns the key name","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#ReadEntities","title":"ISqlDataContext.ReadEntities","content":"ISqlDataContext.ReadEntities \nReadEntities \n Read entity. Table name, columns, data-reader. Returns entities.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#ReadEntitiesAsync","title":"ISqlDataContext.ReadEntitiesAsync","content":"ISqlDataContext.ReadEntitiesAsync \nReadEntitiesAsync \n Read entity. Table name, columns, data-reader. Returns entities task.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#SaveContextSchema","title":"ISqlDataContext.SaveContextSchema","content":"ISqlDataContext.SaveContextSchema \nSaveContextSchema \n Save schema offline as Json","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#SubmitChangedEntity","title":"ISqlDataContext.SubmitChangedEntity","content":"ISqlDataContext.SubmitChangedEntity \nSubmitChangedEntity \n Save entity to database.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#SubmitPendingChanges","title":"ISqlDataContext.SubmitPendingChanges","content":"ISqlDataContext.SubmitPendingChanges \nSubmitPendingChanges \n Save database-changes in a transaction to database.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#SubmitPendingChangesAsync","title":"ISqlDataContext.SubmitPendingChangesAsync","content":"ISqlDataContext.SubmitPendingChangesAsync \nSubmitPendingChangesAsync \n Save database-changes in a transaction to database.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#SqlOperationsInSelect","title":"ISqlDataContext.SqlOperationsInSelect","content":"ISqlDataContext.SqlOperationsInSelect \nSqlOperationsInSelect \n Operations of select in SQL-side or in .NET side?","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#CommandTimeout","title":"ISqlDataContext.CommandTimeout","content":"ISqlDataContext.CommandTimeout \nCommandTimeout \n Command timeout (in seconds)","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-isqldatacontext.html#ConnectionString","title":"ISqlDataContext.ConnectionString","content":"ISqlDataContext.ConnectionString \nConnectionString \n Connection string to database","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-iwithdatacontext.html","title":"IWithDataContext","content":"IWithDataContext \n This is publically exposed and used in the runtime \nIWithDataContext.DataContext \nDataContext","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-iwithdatacontext.html#DataContext","title":"IWithDataContext.DataContext","content":"IWithDataContext.DataContext \nDataContext \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-linkdata.html","title":"LinkData","content":"LinkData \n LinkData is for joins with SelectMany \nLinkData.Rev \nRev \nLinkData.PrimaryTable \nPrimaryTable \nLinkData.PrimaryKey \nPrimaryKey \nLinkData.ForeignTable \nForeignTable \nLinkData.ForeignKey \nForeignKey \nLinkData.OuterJoin \nOuterJoin \nLinkData.RelDirection \nRelDirection","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-linkdata.html#Rev","title":"LinkData.Rev","content":"LinkData.Rev \nRev \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-linkdata.html#PrimaryTable","title":"LinkData.PrimaryTable","content":"LinkData.PrimaryTable \nPrimaryTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-linkdata.html#PrimaryKey","title":"LinkData.PrimaryKey","content":"LinkData.PrimaryKey \nPrimaryKey \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-linkdata.html#ForeignTable","title":"LinkData.ForeignTable","content":"LinkData.ForeignTable \nForeignTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-linkdata.html#ForeignKey","title":"LinkData.ForeignKey","content":"LinkData.ForeignKey \nForeignKey \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-linkdata.html#OuterJoin","title":"LinkData.OuterJoin","content":"LinkData.OuterJoin \nOuterJoin \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-linkdata.html#RelDirection","title":"LinkData.RelDirection","content":"LinkData.RelDirection \nRelDirection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-mappedcolumnattribute.html","title":"MappedColumnAttribute","content":"MappedColumnAttribute \n \nMappedColumnAttribute.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nMappedColumnAttribute.Name \nName","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-mappedcolumnattribute.html#\u0060\u0060.ctor\u0060\u0060","title":"MappedColumnAttribute.\u0060\u0060.ctor\u0060\u0060","content":"MappedColumnAttribute.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-mappedcolumnattribute.html#Name","title":"MappedColumnAttribute.Name","content":"MappedColumnAttribute.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-nullablecolumntype.html","title":"NullableColumnType","content":"NullableColumnType \n \nNullableColumnType.NO_OPTION \nNO_OPTION \nNullableColumnType.OPTION \nOPTION \nNullableColumnType.VALUE_OPTION \nVALUE_OPTION","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-nullablecolumntype.html#NO_OPTION","title":"NullableColumnType.NO_OPTION","content":"NullableColumnType.NO_OPTION \nNO_OPTION \n Nullable types are just Unchecked default. (Old false.)","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-nullablecolumntype.html#OPTION","title":"NullableColumnType.OPTION","content":"NullableColumnType.OPTION \nOPTION \n Option types are Option\u003C_\u003E. (Old true.)","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-nullablecolumntype.html#VALUE_OPTION","title":"NullableColumnType.VALUE_OPTION","content":"NullableColumnType.VALUE_OPTION \nVALUE_OPTION \n ValueOption is more performant.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-odbcquotecharacter.html","title":"OdbcQuoteCharacter","content":"OdbcQuoteCharacter \n \nOdbcQuoteCharacter.DEFAULT_QUOTE \nDEFAULT_QUOTE \nOdbcQuoteCharacter.GRAVE_ACCENT \nGRAVE_ACCENT \nOdbcQuoteCharacter.SQUARE_BRACKETS \nSQUARE_BRACKETS \nOdbcQuoteCharacter.NO_QUOTES \nNO_QUOTES \nOdbcQuoteCharacter.DOUBLE_QUOTES \nDOUBLE_QUOTES \nOdbcQuoteCharacter.APHOSTROPHE \nAPHOSTROPHE","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-odbcquotecharacter.html#DEFAULT_QUOTE","title":"OdbcQuoteCharacter.DEFAULT_QUOTE","content":"OdbcQuoteCharacter.DEFAULT_QUOTE \nDEFAULT_QUOTE \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-odbcquotecharacter.html#GRAVE_ACCENT","title":"OdbcQuoteCharacter.GRAVE_ACCENT","content":"OdbcQuoteCharacter.GRAVE_ACCENT \nGRAVE_ACCENT \n MySQL/Postgre style: \u0060alias\u0060 ","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-odbcquotecharacter.html#SQUARE_BRACKETS","title":"OdbcQuoteCharacter.SQUARE_BRACKETS","content":"OdbcQuoteCharacter.SQUARE_BRACKETS \nSQUARE_BRACKETS \n Microsoft SQL style: [alias]","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-odbcquotecharacter.html#NO_QUOTES","title":"OdbcQuoteCharacter.NO_QUOTES","content":"OdbcQuoteCharacter.NO_QUOTES \nNO_QUOTES \n Plain, no special names: alias","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-odbcquotecharacter.html#DOUBLE_QUOTES","title":"OdbcQuoteCharacter.DOUBLE_QUOTES","content":"OdbcQuoteCharacter.DOUBLE_QUOTES \nDOUBLE_QUOTES \n Amazon Redshift style: \u0022alias\u0022 \u0026 Firebird style too","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-odbcquotecharacter.html#APHOSTROPHE","title":"OdbcQuoteCharacter.APHOSTROPHE","content":"OdbcQuoteCharacter.APHOSTROPHE \nAPHOSTROPHE \n Single quote: \u0027alias\u0027","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-onconflict.html","title":"OnConflict","content":"OnConflict \n \nOnConflict.Throw \nThrow \nOnConflict.Update \nUpdate \nOnConflict.DoNothing \nDoNothing","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-onconflict.html#Throw","title":"OnConflict.Throw","content":"OnConflict.Throw \nThrow \n Throws an exception if the primary key already exists (default behaviour).","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-onconflict.html#Update","title":"OnConflict.Update","content":"OnConflict.Update \nUpdate \n If the primary key already exists, updates the existing row\u0027s columns to match the new entity.\n Currently supported only on PostgreSQL 9.5\u002B","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-onconflict.html#DoNothing","title":"OnConflict.DoNothing","content":"OnConflict.DoNothing \nDoNothing \n If the primary key already exists, leaves the existing row unchanged.\n Currently supported only on PostgreSQL 9.5\u002B","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-relationshipdirection.html","title":"RelationshipDirection","content":"RelationshipDirection \n \nRelationshipDirection.Children \nChildren \nRelationshipDirection.Parents \nParents","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-relationshipdirection.html#Children","title":"RelationshipDirection.Children","content":"RelationshipDirection.Children \nChildren \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-relationshipdirection.html#Parents","title":"RelationshipDirection.Parents","content":"RelationshipDirection.Parents \nParents \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-resultset.html","title":"ResultSet","content":"ResultSet \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnsettype.html","title":"ReturnSetType","content":"ReturnSetType \n \nReturnSetType.ScalarResultSet \nScalarResultSet \nReturnSetType.ResultSet \nResultSet","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnsettype.html#ScalarResultSet","title":"ReturnSetType.ScalarResultSet","content":"ReturnSetType.ScalarResultSet \nScalarResultSet \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnsettype.html#ResultSet","title":"ReturnSetType.ResultSet","content":"ReturnSetType.ResultSet \nResultSet \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnvaluetype.html","title":"ReturnValueType","content":"ReturnValueType \n \nReturnValueType.Unit \nUnit \nReturnValueType.Scalar \nScalar \nReturnValueType.SingleResultSet \nSingleResultSet \nReturnValueType.Set \nSet","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnvaluetype.html#Unit","title":"ReturnValueType.Unit","content":"ReturnValueType.Unit \nUnit \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnvaluetype.html#Scalar","title":"ReturnValueType.Scalar","content":"ReturnValueType.Scalar \nScalar \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnvaluetype.html#SingleResultSet","title":"ReturnValueType.SingleResultSet","content":"ReturnValueType.SingleResultSet \nSingleResultSet \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-returnvaluetype.html#Set","title":"ReturnValueType.Set","content":"ReturnValueType.Set \nSet \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlitelibrary.html","title":"SQLiteLibrary","content":"SQLiteLibrary \n \nSQLiteLibrary.SystemDataSQLite \nSystemDataSQLite \nSQLiteLibrary.MonoDataSQLite \nMonoDataSQLite \nSQLiteLibrary.AutoSelect \nAutoSelect \nSQLiteLibrary.MicrosoftDataSqlite \nMicrosoftDataSqlite","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlitelibrary.html#SystemDataSQLite","title":"SQLiteLibrary.SystemDataSQLite","content":"SQLiteLibrary.SystemDataSQLite \nSystemDataSQLite \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlitelibrary.html#MonoDataSQLite","title":"SQLiteLibrary.MonoDataSQLite","content":"SQLiteLibrary.MonoDataSQLite \nMonoDataSQLite \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlitelibrary.html#AutoSelect","title":"SQLiteLibrary.AutoSelect","content":"SQLiteLibrary.AutoSelect \nAutoSelect \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlitelibrary.html#MicrosoftDataSqlite","title":"SQLiteLibrary.MicrosoftDataSqlite","content":"SQLiteLibrary.MicrosoftDataSqlite \nMicrosoftDataSqlite \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-selectdata.html","title":"SelectData","content":"SelectData \n \nSelectData.LinkQuery \nLinkQuery \nSelectData.GroupQuery \nGroupQuery \nSelectData.CrossJoin \nCrossJoin","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-selectdata.html#LinkQuery","title":"SelectData.LinkQuery","content":"SelectData.LinkQuery \nLinkQuery \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-selectdata.html#GroupQuery","title":"SelectData.GroupQuery","content":"SelectData.GroupQuery \nGroupQuery \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-selectdata.html#CrossJoin","title":"SelectData.CrossJoin","content":"SelectData.CrossJoin \nCrossJoin \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html","title":"SqlEntity","content":"SqlEntity \n \nSqlEntity.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nSqlEntity.Clone \nClone \nSqlEntity.CloneTo \nCloneTo \nSqlEntity.Delete \nDelete \nSqlEntity.GetColumn \nGetColumn \nSqlEntity.GetColumnOption \nGetColumnOption \nSqlEntity.GetColumnValueOption \nGetColumnValueOption \nSqlEntity.GetPkColumnOption \nGetPkColumnOption \nSqlEntity.HasColumn \nHasColumn \nSqlEntity.HasValue \nHasValue \nSqlEntity.MapTo \nMapTo \nSqlEntity.SetColumn \nSetColumn \nSqlEntity.SetColumnOption \nSetColumnOption \nSqlEntity.SetColumnOptionSilent \nSetColumnOptionSilent \nSqlEntity.SetColumnSilent \nSetColumnSilent \nSqlEntity.SetColumnValueOption \nSetColumnValueOption \nSqlEntity.SetData \nSetData \nSqlEntity.SetPkColumnOptionSilent \nSetPkColumnOptionSilent \nSqlEntity.SetPkColumnSilent \nSetPkColumnSilent \nSqlEntity.Table \nTable \nSqlEntity.DataContext \nDataContext \nSqlEntity._State \n_State \nSqlEntity.ColumnValues \nColumnValues \nSqlEntity.OnConflict \nOnConflict","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#\u0060\u0060.ctor\u0060\u0060","title":"SqlEntity.\u0060\u0060.ctor\u0060\u0060","content":"SqlEntity.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#Clone","title":"SqlEntity.Clone","content":"SqlEntity.Clone \nClone \n Makes a copy of entity (database row), which is a new row with the same columns and values (except Id)\n If column primaty key is something else and not-auto-generated, then, too bad...","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#CloneTo","title":"SqlEntity.CloneTo","content":"SqlEntity.CloneTo \nCloneTo \n Attach/copy entity to a different data-context.\n Second parameter: SQL UPDATE or INSERT clause? \n UPDATE: Updates the exising database entity with the values that this entity contains.\n INSERT: Makes a copy of entity (database row), which is a new row with the same columns and values (except Id)","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#Delete","title":"SqlEntity.Delete","content":"SqlEntity.Delete \nDelete \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#GetColumn","title":"SqlEntity.GetColumn","content":"SqlEntity.GetColumn \nGetColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#GetColumnOption","title":"SqlEntity.GetColumnOption","content":"SqlEntity.GetColumnOption \nGetColumnOption \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#GetColumnValueOption","title":"SqlEntity.GetColumnValueOption","content":"SqlEntity.GetColumnValueOption \nGetColumnValueOption \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#GetPkColumnOption","title":"SqlEntity.GetPkColumnOption","content":"SqlEntity.GetPkColumnOption \nGetPkColumnOption \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#HasColumn","title":"SqlEntity.HasColumn","content":"SqlEntity.HasColumn \nHasColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#HasValue","title":"SqlEntity.HasValue","content":"SqlEntity.HasValue \nHasValue \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#MapTo","title":"SqlEntity.MapTo","content":"SqlEntity.MapTo \nMapTo \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#SetColumn","title":"SqlEntity.SetColumn","content":"SqlEntity.SetColumn \nSetColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#SetColumnOption","title":"SqlEntity.SetColumnOption","content":"SqlEntity.SetColumnOption \nSetColumnOption \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#SetColumnOptionSilent","title":"SqlEntity.SetColumnOptionSilent","content":"SqlEntity.SetColumnOptionSilent \nSetColumnOptionSilent \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#SetColumnSilent","title":"SqlEntity.SetColumnSilent","content":"SqlEntity.SetColumnSilent \nSetColumnSilent \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#SetColumnValueOption","title":"SqlEntity.SetColumnValueOption","content":"SqlEntity.SetColumnValueOption \nSetColumnValueOption \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#SetData","title":"SqlEntity.SetData","content":"SqlEntity.SetData \nSetData \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#SetPkColumnOptionSilent","title":"SqlEntity.SetPkColumnOptionSilent","content":"SqlEntity.SetPkColumnOptionSilent \nSetPkColumnOptionSilent \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#SetPkColumnSilent","title":"SqlEntity.SetPkColumnSilent","content":"SqlEntity.SetPkColumnSilent \nSetPkColumnSilent \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#Table","title":"SqlEntity.Table","content":"SqlEntity.Table \nTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#DataContext","title":"SqlEntity.DataContext","content":"SqlEntity.DataContext \nDataContext \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#_State","title":"SqlEntity._State","content":"SqlEntity._State \n_State \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#ColumnValues","title":"SqlEntity.ColumnValues","content":"SqlEntity.ColumnValues \nColumnValues \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-sqlentity.html#OnConflict","title":"SqlEntity.OnConflict","content":"SqlEntity.OnConflict \nOnConflict \n Determines what should happen when saving this entity if it is newly-created but another entity with the same primary key already exists","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-uniontype.html","title":"UnionType","content":"UnionType \n \nUnionType.NormalUnion \nNormalUnion \nUnionType.UnionAll \nUnionAll \nUnionType.Intersect \nIntersect \nUnionType.Except \nExcept","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-uniontype.html#NormalUnion","title":"UnionType.NormalUnion","content":"UnionType.NormalUnion \nNormalUnion \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-uniontype.html#UnionAll","title":"UnionType.UnionAll","content":"UnionType.UnionAll \nUnionAll \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-uniontype.html#Intersect","title":"UnionType.Intersect","content":"UnionType.Intersect \nIntersect \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-uniontype.html#Except","title":"UnionType.Except","content":"UnionType.Except \nExcept \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-table.html","title":"table","content":"table \n \ntable.Chars \nChars \ntable.Length \nLength","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-table.html#Chars","title":"table.Chars","content":"table.Chars \nChars \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-common-table.html#Length","title":"table.Length","content":"table.Length \nLength \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html","title":"DuckDb","content":"DuckDb \n \nDuckDb.resolutionPath \nresolutionPath \nDuckDb.schemas \nschemas \nDuckDb.referencedAssemblies \nreferencedAssemblies \nDuckDb.assemblyNames \nassemblyNames \nDuckDb.assembly \nassembly \nDuckDb.findType \nfindType \nDuckDb.connectionType \nconnectionType \nDuckDb.commandType \ncommandType \nDuckDb.parameterType \nparameterType \nDuckDb.getSchemaMethod \ngetSchemaMethod \nDuckDb.getSchema \ngetSchema \nDuckDb.typeMappings \ntypeMappings \nDuckDb.findClrType \nfindClrType \nDuckDb.findDbType \nfindDbType \nDuckDb.createCommandParameter \ncreateCommandParameter \nDuckDb.createParam \ncreateParam \nDuckDb.fieldNotationAlias \nfieldNotationAlias \nDuckDb.ripQuotes \nripQuotes \nDuckDb.createTypeMappings \ncreateTypeMappings \nDuckDb.createConnection \ncreateConnection \nDuckDb.createCommand \ncreateCommand \nDuckDb.getSprocReturnCols \ngetSprocReturnCols \nDuckDb.getSprocName \ngetSprocName \nDuckDb.getSprocParameters \ngetSprocParameters \nDuckDb.getSprocs \ngetSprocs \nDuckDb.readParameter \nreadParameter \nDuckDb.processReturnColumn \nprocessReturnColumn \nDuckDb.processReturnColumnAsync \nprocessReturnColumnAsync \nDuckDb.executeSprocCommandCommon \nexecuteSprocCommandCommon \nDuckDb.executeSprocCommand \nexecuteSprocCommand \nDuckDb.executeSprocCommandAsync \nexecuteSprocCommandAsync","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#resolutionPath","title":"DuckDb.resolutionPath","content":"DuckDb.resolutionPath \nresolutionPath \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#schemas","title":"DuckDb.schemas","content":"DuckDb.schemas \nschemas \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#referencedAssemblies","title":"DuckDb.referencedAssemblies","content":"DuckDb.referencedAssemblies \nreferencedAssemblies \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#assemblyNames","title":"DuckDb.assemblyNames","content":"DuckDb.assemblyNames \nassemblyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#assembly","title":"DuckDb.assembly","content":"DuckDb.assembly \nassembly \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#findType","title":"DuckDb.findType","content":"DuckDb.findType \nfindType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#connectionType","title":"DuckDb.connectionType","content":"DuckDb.connectionType \nconnectionType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#commandType","title":"DuckDb.commandType","content":"DuckDb.commandType \ncommandType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#parameterType","title":"DuckDb.parameterType","content":"DuckDb.parameterType \nparameterType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#getSchemaMethod","title":"DuckDb.getSchemaMethod","content":"DuckDb.getSchemaMethod \ngetSchemaMethod \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#getSchema","title":"DuckDb.getSchema","content":"DuckDb.getSchema \ngetSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#typeMappings","title":"DuckDb.typeMappings","content":"DuckDb.typeMappings \ntypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#findClrType","title":"DuckDb.findClrType","content":"DuckDb.findClrType \nfindClrType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#findDbType","title":"DuckDb.findDbType","content":"DuckDb.findDbType \nfindDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#createCommandParameter","title":"DuckDb.createCommandParameter","content":"DuckDb.createCommandParameter \ncreateCommandParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#createParam","title":"DuckDb.createParam","content":"DuckDb.createParam \ncreateParam \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#fieldNotationAlias","title":"DuckDb.fieldNotationAlias","content":"DuckDb.fieldNotationAlias \nfieldNotationAlias \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#ripQuotes","title":"DuckDb.ripQuotes","content":"DuckDb.ripQuotes \nripQuotes \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#createTypeMappings","title":"DuckDb.createTypeMappings","content":"DuckDb.createTypeMappings \ncreateTypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#createConnection","title":"DuckDb.createConnection","content":"DuckDb.createConnection \ncreateConnection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#createCommand","title":"DuckDb.createCommand","content":"DuckDb.createCommand \ncreateCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#getSprocReturnCols","title":"DuckDb.getSprocReturnCols","content":"DuckDb.getSprocReturnCols \ngetSprocReturnCols \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#getSprocName","title":"DuckDb.getSprocName","content":"DuckDb.getSprocName \ngetSprocName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#getSprocParameters","title":"DuckDb.getSprocParameters","content":"DuckDb.getSprocParameters \ngetSprocParameters \n DuckDB doesn\u0027t support sprocs yet.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#getSprocs","title":"DuckDb.getSprocs","content":"DuckDb.getSprocs \ngetSprocs \n DuckDB doesn\u0027t support sprocs yet.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#readParameter","title":"DuckDb.readParameter","content":"DuckDb.readParameter \nreadParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#processReturnColumn","title":"DuckDb.processReturnColumn","content":"DuckDb.processReturnColumn \nprocessReturnColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#processReturnColumnAsync","title":"DuckDb.processReturnColumnAsync","content":"DuckDb.processReturnColumnAsync \nprocessReturnColumnAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#executeSprocCommandCommon","title":"DuckDb.executeSprocCommandCommon","content":"DuckDb.executeSprocCommandCommon \nexecuteSprocCommandCommon \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#executeSprocCommand","title":"DuckDb.executeSprocCommand","content":"DuckDb.executeSprocCommand \nexecuteSprocCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-duckdb.html#executeSprocCommandAsync","title":"DuckDb.executeSprocCommandAsync","content":"DuckDb.executeSprocCommandAsync \nexecuteSprocCommandAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html","title":"Firebird","content":"Firebird \n \nFirebird.DataReaderWithCommand \nDataReaderWithCommand \nFirebird.resolutionPath \nresolutionPath \nFirebird.owner \nowner \nFirebird.referencedAssemblies \nreferencedAssemblies \nFirebird.assemblyNames \nassemblyNames \nFirebird.assembly \nassembly \nFirebird.executeSql \nexecuteSql \nFirebird.executeSqlAsDataTable \nexecuteSqlAsDataTable \nFirebird.executeSqlAsync \nexecuteSqlAsync \nFirebird.executeSqlAsDataTableAsync \nexecuteSqlAsDataTableAsync \nFirebird.findType \nfindType \nFirebird.connectionType \nconnectionType \nFirebird.commandType \ncommandType \nFirebird.parameterType \nparameterType \nFirebird.enumType \nenumType \nFirebird.getSchemaMethod \ngetSchemaMethod \nFirebird.paramEnumCtor \nparamEnumCtor \nFirebird.paramObjectCtor \nparamObjectCtor \nFirebird.getSchema \ngetSchema \nFirebird.typeMappings \ntypeMappings \nFirebird.findClrType \nfindClrType \nFirebird.findDbType \nfindDbType \nFirebird.createCommandParameter \ncreateCommandParameter \nFirebird.createParam \ncreateParam \nFirebird.fieldNotationAlias \nfieldNotationAlias \nFirebird.ripQuotes \nripQuotes \nFirebird.createTypeMappings \ncreateTypeMappings \nFirebird.createConnection \ncreateConnection \nFirebird.createCommand \ncreateCommand \nFirebird.getSprocReturnCols \ngetSprocReturnCols \nFirebird.getSprocName \ngetSprocName \nFirebird.sqlTypeName \nsqlTypeName \nFirebird.getSprocParameters \ngetSprocParameters \nFirebird.getSprocs \ngetSprocs \nFirebird.readParameter \nreadParameter \nFirebird.processReturnColumn \nprocessReturnColumn \nFirebird.processReturnColumnAsync \nprocessReturnColumnAsync \nFirebird.executeSprocCommandCommon \nexecuteSprocCommandCommon \nFirebird.executeSprocCommand \nexecuteSprocCommand \nFirebird.executeSprocCommandAsync \nexecuteSprocCommandAsync","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#resolutionPath","title":"Firebird.resolutionPath","content":"Firebird.resolutionPath \nresolutionPath \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#owner","title":"Firebird.owner","content":"Firebird.owner \nowner \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#referencedAssemblies","title":"Firebird.referencedAssemblies","content":"Firebird.referencedAssemblies \nreferencedAssemblies \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#assemblyNames","title":"Firebird.assemblyNames","content":"Firebird.assemblyNames \nassemblyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#assembly","title":"Firebird.assembly","content":"Firebird.assembly \nassembly \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#executeSql","title":"Firebird.executeSql","content":"Firebird.executeSql \nexecuteSql \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#executeSqlAsDataTable","title":"Firebird.executeSqlAsDataTable","content":"Firebird.executeSqlAsDataTable \nexecuteSqlAsDataTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#executeSqlAsync","title":"Firebird.executeSqlAsync","content":"Firebird.executeSqlAsync \nexecuteSqlAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#executeSqlAsDataTableAsync","title":"Firebird.executeSqlAsDataTableAsync","content":"Firebird.executeSqlAsDataTableAsync \nexecuteSqlAsDataTableAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#findType","title":"Firebird.findType","content":"Firebird.findType \nfindType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#connectionType","title":"Firebird.connectionType","content":"Firebird.connectionType \nconnectionType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#commandType","title":"Firebird.commandType","content":"Firebird.commandType \ncommandType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#parameterType","title":"Firebird.parameterType","content":"Firebird.parameterType \nparameterType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#enumType","title":"Firebird.enumType","content":"Firebird.enumType \nenumType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#getSchemaMethod","title":"Firebird.getSchemaMethod","content":"Firebird.getSchemaMethod \ngetSchemaMethod \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#paramEnumCtor","title":"Firebird.paramEnumCtor","content":"Firebird.paramEnumCtor \nparamEnumCtor \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#paramObjectCtor","title":"Firebird.paramObjectCtor","content":"Firebird.paramObjectCtor \nparamObjectCtor \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#getSchema","title":"Firebird.getSchema","content":"Firebird.getSchema \ngetSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#typeMappings","title":"Firebird.typeMappings","content":"Firebird.typeMappings \ntypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#findClrType","title":"Firebird.findClrType","content":"Firebird.findClrType \nfindClrType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#findDbType","title":"Firebird.findDbType","content":"Firebird.findDbType \nfindDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#createCommandParameter","title":"Firebird.createCommandParameter","content":"Firebird.createCommandParameter \ncreateCommandParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#createParam","title":"Firebird.createParam","content":"Firebird.createParam \ncreateParam \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#fieldNotationAlias","title":"Firebird.fieldNotationAlias","content":"Firebird.fieldNotationAlias \nfieldNotationAlias \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#ripQuotes","title":"Firebird.ripQuotes","content":"Firebird.ripQuotes \nripQuotes \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#createTypeMappings","title":"Firebird.createTypeMappings","content":"Firebird.createTypeMappings \ncreateTypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#createConnection","title":"Firebird.createConnection","content":"Firebird.createConnection \ncreateConnection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#createCommand","title":"Firebird.createCommand","content":"Firebird.createCommand \ncreateCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#getSprocReturnCols","title":"Firebird.getSprocReturnCols","content":"Firebird.getSprocReturnCols \ngetSprocReturnCols \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#getSprocName","title":"Firebird.getSprocName","content":"Firebird.getSprocName \ngetSprocName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#sqlTypeName","title":"Firebird.sqlTypeName","content":"Firebird.sqlTypeName \nsqlTypeName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#getSprocParameters","title":"Firebird.getSprocParameters","content":"Firebird.getSprocParameters \ngetSprocParameters \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#getSprocs","title":"Firebird.getSprocs","content":"Firebird.getSprocs \ngetSprocs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#readParameter","title":"Firebird.readParameter","content":"Firebird.readParameter \nreadParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#processReturnColumn","title":"Firebird.processReturnColumn","content":"Firebird.processReturnColumn \nprocessReturnColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#processReturnColumnAsync","title":"Firebird.processReturnColumnAsync","content":"Firebird.processReturnColumnAsync \nprocessReturnColumnAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#executeSprocCommandCommon","title":"Firebird.executeSprocCommandCommon","content":"Firebird.executeSprocCommandCommon \nexecuteSprocCommandCommon \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#executeSprocCommand","title":"Firebird.executeSprocCommand","content":"Firebird.executeSprocCommand \nexecuteSprocCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird.html#executeSprocCommandAsync","title":"Firebird.executeSprocCommandAsync","content":"Firebird.executeSprocCommandAsync \nexecuteSprocCommandAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird-datareaderwithcommand.html","title":"DataReaderWithCommand","content":"DataReaderWithCommand \n \nDataReaderWithCommand.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \nDataReaderWithCommand.Command \nCommand \nDataReaderWithCommand.DataReader \nDataReader","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird-datareaderwithcommand.html#\u0060\u0060.ctor\u0060\u0060","title":"DataReaderWithCommand.\u0060\u0060.ctor\u0060\u0060","content":"DataReaderWithCommand.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird-datareaderwithcommand.html#Command","title":"DataReaderWithCommand.Command","content":"DataReaderWithCommand.Command \nCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-firebird-datareaderwithcommand.html#DataReader","title":"DataReaderWithCommand.DataReader","content":"DataReaderWithCommand.DataReader \nDataReader \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html","title":"MSSqlServer","content":"MSSqlServer \n \nMSSqlServer.getSchema \ngetSchema \nMSSqlServer.typeMappings \ntypeMappings \nMSSqlServer.findClrType \nfindClrType \nMSSqlServer.findDbType \nfindDbType \nMSSqlServer.createTypeMappings \ncreateTypeMappings \nMSSqlServer.checkIfMsSqlAssemblyIsDesingOnly \ncheckIfMsSqlAssemblyIsDesingOnly \nMSSqlServer.createConnection \ncreateConnection \nMSSqlServer.createCommand \ncreateCommand \nMSSqlServer.dbUnbox \ndbUnbox \nMSSqlServer.dbUnboxWithDefault \ndbUnboxWithDefault \nMSSqlServer.connect \nconnect \nMSSqlServer.executeSql \nexecuteSql \nMSSqlServer.readParameter \nreadParameter \nMSSqlServer.readInOutParameterFromCommand \nreadInOutParameterFromCommand \nMSSqlServer.createOpenParameter \ncreateOpenParameter \nMSSqlServer.createCommandParameter \ncreateCommandParameter \nMSSqlServer.getSprocReturnCols \ngetSprocReturnCols \nMSSqlServer.getSprocName \ngetSprocName \nMSSqlServer.getSprocParameters \ngetSprocParameters \nMSSqlServer.getSprocs \ngetSprocs \nMSSqlServer.processReturnColumn \nprocessReturnColumn \nMSSqlServer.processReturnColumnAsync \nprocessReturnColumnAsync \nMSSqlServer.executeSprocCommandCommon \nexecuteSprocCommandCommon \nMSSqlServer.executeSprocCommand \nexecuteSprocCommand \nMSSqlServer.executeSprocCommandAsync \nexecuteSprocCommandAsync \nMSSqlServer.fieldNotationAlias \nfieldNotationAlias","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#getSchema","title":"MSSqlServer.getSchema","content":"MSSqlServer.getSchema \ngetSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#typeMappings","title":"MSSqlServer.typeMappings","content":"MSSqlServer.typeMappings \ntypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#findClrType","title":"MSSqlServer.findClrType","content":"MSSqlServer.findClrType \nfindClrType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#findDbType","title":"MSSqlServer.findDbType","content":"MSSqlServer.findDbType \nfindDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#createTypeMappings","title":"MSSqlServer.createTypeMappings","content":"MSSqlServer.createTypeMappings \ncreateTypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#checkIfMsSqlAssemblyIsDesingOnly","title":"MSSqlServer.checkIfMsSqlAssemblyIsDesingOnly","content":"MSSqlServer.checkIfMsSqlAssemblyIsDesingOnly \ncheckIfMsSqlAssemblyIsDesingOnly \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#createConnection","title":"MSSqlServer.createConnection","content":"MSSqlServer.createConnection \ncreateConnection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#createCommand","title":"MSSqlServer.createCommand","content":"MSSqlServer.createCommand \ncreateCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#dbUnbox","title":"MSSqlServer.dbUnbox","content":"MSSqlServer.dbUnbox \ndbUnbox \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#dbUnboxWithDefault","title":"MSSqlServer.dbUnboxWithDefault","content":"MSSqlServer.dbUnboxWithDefault \ndbUnboxWithDefault \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#connect","title":"MSSqlServer.connect","content":"MSSqlServer.connect \nconnect \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#executeSql","title":"MSSqlServer.executeSql","content":"MSSqlServer.executeSql \nexecuteSql \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#readParameter","title":"MSSqlServer.readParameter","content":"MSSqlServer.readParameter \nreadParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#readInOutParameterFromCommand","title":"MSSqlServer.readInOutParameterFromCommand","content":"MSSqlServer.readInOutParameterFromCommand \nreadInOutParameterFromCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#createOpenParameter","title":"MSSqlServer.createOpenParameter","content":"MSSqlServer.createOpenParameter \ncreateOpenParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#createCommandParameter","title":"MSSqlServer.createCommandParameter","content":"MSSqlServer.createCommandParameter \ncreateCommandParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#getSprocReturnCols","title":"MSSqlServer.getSprocReturnCols","content":"MSSqlServer.getSprocReturnCols \ngetSprocReturnCols \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#getSprocName","title":"MSSqlServer.getSprocName","content":"MSSqlServer.getSprocName \ngetSprocName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#getSprocParameters","title":"MSSqlServer.getSprocParameters","content":"MSSqlServer.getSprocParameters \ngetSprocParameters \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#getSprocs","title":"MSSqlServer.getSprocs","content":"MSSqlServer.getSprocs \ngetSprocs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#processReturnColumn","title":"MSSqlServer.processReturnColumn","content":"MSSqlServer.processReturnColumn \nprocessReturnColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#processReturnColumnAsync","title":"MSSqlServer.processReturnColumnAsync","content":"MSSqlServer.processReturnColumnAsync \nprocessReturnColumnAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#executeSprocCommandCommon","title":"MSSqlServer.executeSprocCommandCommon","content":"MSSqlServer.executeSprocCommandCommon \nexecuteSprocCommandCommon \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#executeSprocCommand","title":"MSSqlServer.executeSprocCommand","content":"MSSqlServer.executeSprocCommand \nexecuteSprocCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#executeSprocCommandAsync","title":"MSSqlServer.executeSprocCommandAsync","content":"MSSqlServer.executeSprocCommandAsync \nexecuteSprocCommandAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserver.html#fieldNotationAlias","title":"MSSqlServer.fieldNotationAlias","content":"MSSqlServer.fieldNotationAlias \nfieldNotationAlias \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html","title":"MSSqlServerDynamic","content":"MSSqlServerDynamic \n \nMSSqlServerDynamic.resolutionPath \nresolutionPath \nMSSqlServerDynamic.referencedAssemblies \nreferencedAssemblies \nMSSqlServerDynamic.assemblyNames \nassemblyNames \nMSSqlServerDynamic.assembly \nassembly \nMSSqlServerDynamic.findType \nfindType \nMSSqlServerDynamic.connectionType \nconnectionType \nMSSqlServerDynamic.commandType \ncommandType \nMSSqlServerDynamic.parameterType \nparameterType \nMSSqlServerDynamic.enumType \nenumType \nMSSqlServerDynamic.getSchemaMethod \ngetSchemaMethod \nMSSqlServerDynamic.getSchema \ngetSchema \nMSSqlServerDynamic.parseDbType \nparseDbType \nMSSqlServerDynamic.typeMappings \ntypeMappings \nMSSqlServerDynamic.findClrType \nfindClrType \nMSSqlServerDynamic.findDbType \nfindDbType \nMSSqlServerDynamic.createTypeMappings \ncreateTypeMappings \nMSSqlServerDynamic.createConnection \ncreateConnection \nMSSqlServerDynamic.createCommand \ncreateCommand \nMSSqlServerDynamic.dbUnbox \ndbUnbox \nMSSqlServerDynamic.dbUnboxWithDefault \ndbUnboxWithDefault \nMSSqlServerDynamic.connect \nconnect \nMSSqlServerDynamic.executeSql \nexecuteSql \nMSSqlServerDynamic.readParameter \nreadParameter \nMSSqlServerDynamic.readInOutParameterFromCommand \nreadInOutParameterFromCommand \nMSSqlServerDynamic.createOpenParameter \ncreateOpenParameter \nMSSqlServerDynamic.createCommandParameter \ncreateCommandParameter \nMSSqlServerDynamic.getSprocReturnCols \ngetSprocReturnCols \nMSSqlServerDynamic.getSprocName \ngetSprocName \nMSSqlServerDynamic.getSprocParameters \ngetSprocParameters \nMSSqlServerDynamic.getSprocs \ngetSprocs \nMSSqlServerDynamic.processReturnColumn \nprocessReturnColumn \nMSSqlServerDynamic.processReturnColumnAsync \nprocessReturnColumnAsync \nMSSqlServerDynamic.executeSprocCommandCommon \nexecuteSprocCommandCommon \nMSSqlServerDynamic.executeSprocCommand \nexecuteSprocCommand \nMSSqlServerDynamic.executeSprocCommandAsync \nexecuteSprocCommandAsync","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#resolutionPath","title":"MSSqlServerDynamic.resolutionPath","content":"MSSqlServerDynamic.resolutionPath \nresolutionPath \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#referencedAssemblies","title":"MSSqlServerDynamic.referencedAssemblies","content":"MSSqlServerDynamic.referencedAssemblies \nreferencedAssemblies \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#assemblyNames","title":"MSSqlServerDynamic.assemblyNames","content":"MSSqlServerDynamic.assemblyNames \nassemblyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#assembly","title":"MSSqlServerDynamic.assembly","content":"MSSqlServerDynamic.assembly \nassembly \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#findType","title":"MSSqlServerDynamic.findType","content":"MSSqlServerDynamic.findType \nfindType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#connectionType","title":"MSSqlServerDynamic.connectionType","content":"MSSqlServerDynamic.connectionType \nconnectionType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#commandType","title":"MSSqlServerDynamic.commandType","content":"MSSqlServerDynamic.commandType \ncommandType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#parameterType","title":"MSSqlServerDynamic.parameterType","content":"MSSqlServerDynamic.parameterType \nparameterType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#enumType","title":"MSSqlServerDynamic.enumType","content":"MSSqlServerDynamic.enumType \nenumType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#getSchemaMethod","title":"MSSqlServerDynamic.getSchemaMethod","content":"MSSqlServerDynamic.getSchemaMethod \ngetSchemaMethod \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#getSchema","title":"MSSqlServerDynamic.getSchema","content":"MSSqlServerDynamic.getSchema \ngetSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#parseDbType","title":"MSSqlServerDynamic.parseDbType","content":"MSSqlServerDynamic.parseDbType \nparseDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#typeMappings","title":"MSSqlServerDynamic.typeMappings","content":"MSSqlServerDynamic.typeMappings \ntypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#findClrType","title":"MSSqlServerDynamic.findClrType","content":"MSSqlServerDynamic.findClrType \nfindClrType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#findDbType","title":"MSSqlServerDynamic.findDbType","content":"MSSqlServerDynamic.findDbType \nfindDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#createTypeMappings","title":"MSSqlServerDynamic.createTypeMappings","content":"MSSqlServerDynamic.createTypeMappings \ncreateTypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#createConnection","title":"MSSqlServerDynamic.createConnection","content":"MSSqlServerDynamic.createConnection \ncreateConnection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#createCommand","title":"MSSqlServerDynamic.createCommand","content":"MSSqlServerDynamic.createCommand \ncreateCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#dbUnbox","title":"MSSqlServerDynamic.dbUnbox","content":"MSSqlServerDynamic.dbUnbox \ndbUnbox \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#dbUnboxWithDefault","title":"MSSqlServerDynamic.dbUnboxWithDefault","content":"MSSqlServerDynamic.dbUnboxWithDefault \ndbUnboxWithDefault \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#connect","title":"MSSqlServerDynamic.connect","content":"MSSqlServerDynamic.connect \nconnect \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#executeSql","title":"MSSqlServerDynamic.executeSql","content":"MSSqlServerDynamic.executeSql \nexecuteSql \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#readParameter","title":"MSSqlServerDynamic.readParameter","content":"MSSqlServerDynamic.readParameter \nreadParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#readInOutParameterFromCommand","title":"MSSqlServerDynamic.readInOutParameterFromCommand","content":"MSSqlServerDynamic.readInOutParameterFromCommand \nreadInOutParameterFromCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#createOpenParameter","title":"MSSqlServerDynamic.createOpenParameter","content":"MSSqlServerDynamic.createOpenParameter \ncreateOpenParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#createCommandParameter","title":"MSSqlServerDynamic.createCommandParameter","content":"MSSqlServerDynamic.createCommandParameter \ncreateCommandParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#getSprocReturnCols","title":"MSSqlServerDynamic.getSprocReturnCols","content":"MSSqlServerDynamic.getSprocReturnCols \ngetSprocReturnCols \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#getSprocName","title":"MSSqlServerDynamic.getSprocName","content":"MSSqlServerDynamic.getSprocName \ngetSprocName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#getSprocParameters","title":"MSSqlServerDynamic.getSprocParameters","content":"MSSqlServerDynamic.getSprocParameters \ngetSprocParameters \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#getSprocs","title":"MSSqlServerDynamic.getSprocs","content":"MSSqlServerDynamic.getSprocs \ngetSprocs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#processReturnColumn","title":"MSSqlServerDynamic.processReturnColumn","content":"MSSqlServerDynamic.processReturnColumn \nprocessReturnColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#processReturnColumnAsync","title":"MSSqlServerDynamic.processReturnColumnAsync","content":"MSSqlServerDynamic.processReturnColumnAsync \nprocessReturnColumnAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#executeSprocCommandCommon","title":"MSSqlServerDynamic.executeSprocCommandCommon","content":"MSSqlServerDynamic.executeSprocCommandCommon \nexecuteSprocCommandCommon \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#executeSprocCommand","title":"MSSqlServerDynamic.executeSprocCommand","content":"MSSqlServerDynamic.executeSprocCommand \nexecuteSprocCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverdynamic.html#executeSprocCommandAsync","title":"MSSqlServerDynamic.executeSprocCommandAsync","content":"MSSqlServerDynamic.executeSprocCommandAsync \nexecuteSprocCommandAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html","title":"MSSqlServerSsdt","content":"MSSqlServerSsdt \n \nMSSqlServerSsdt.DACPAC_SEARCH_PATH_ENV_VAR_NAME \nDACPAC_SEARCH_PATH_ENV_VAR_NAME \nMSSqlServerSsdt.findDacPacFile \nfindDacPacFile \nMSSqlServerSsdt.parseDacpac \nparseDacpac \nMSSqlServerSsdt.typeMappingsByName \ntypeMappingsByName \nMSSqlServerSsdt.tryFindMapping \ntryFindMapping \nMSSqlServerSsdt.tryFindMappingOrVariant \ntryFindMappingOrVariant \nMSSqlServerSsdt.ssdtTableToTable \nssdtTableToTable \nMSSqlServerSsdt.ssdtColumnToColumn \nssdtColumnToColumn \nMSSqlServerSsdt.ssdtCache \nssdtCache","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#DACPAC_SEARCH_PATH_ENV_VAR_NAME","title":"MSSqlServerSsdt.DACPAC_SEARCH_PATH_ENV_VAR_NAME","content":"MSSqlServerSsdt.DACPAC_SEARCH_PATH_ENV_VAR_NAME \nDACPAC_SEARCH_PATH_ENV_VAR_NAME \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#findDacPacFile","title":"MSSqlServerSsdt.findDacPacFile","content":"MSSqlServerSsdt.findDacPacFile \nfindDacPacFile \n Tries to find .dacpac file using the given path at design time or by searching the runtime assembly path.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#parseDacpac","title":"MSSqlServerSsdt.parseDacpac","content":"MSSqlServerSsdt.parseDacpac \nparseDacpac \n Tries to parse a schema model from the given .dacpac file path.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#typeMappingsByName","title":"MSSqlServerSsdt.typeMappingsByName","content":"MSSqlServerSsdt.typeMappingsByName \ntypeMappingsByName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#tryFindMapping","title":"MSSqlServerSsdt.tryFindMapping","content":"MSSqlServerSsdt.tryFindMapping \ntryFindMapping \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#tryFindMappingOrVariant","title":"MSSqlServerSsdt.tryFindMappingOrVariant","content":"MSSqlServerSsdt.tryFindMappingOrVariant \ntryFindMappingOrVariant \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#ssdtTableToTable","title":"MSSqlServerSsdt.ssdtTableToTable","content":"MSSqlServerSsdt.ssdtTableToTable \nssdtTableToTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#ssdtColumnToColumn","title":"MSSqlServerSsdt.ssdtColumnToColumn","content":"MSSqlServerSsdt.ssdtColumnToColumn \nssdtColumnToColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mssqlserverssdt.html#ssdtCache","title":"MSSqlServerSsdt.ssdtCache","content":"MSSqlServerSsdt.ssdtCache \nssdtCache \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html","title":"MySql","content":"MySql \n \nMySql.resolutionPath \nresolutionPath \nMySql.schemas \nschemas \nMySql.referencedAssemblies \nreferencedAssemblies \nMySql.assemblyNames \nassemblyNames \nMySql.assembly \nassembly \nMySql.findType \nfindType \nMySql.connectionType \nconnectionType \nMySql.commandType \ncommandType \nMySql.parameterType \nparameterType \nMySql.enumType \nenumType \nMySql.getSchemaMethod \ngetSchemaMethod \nMySql.getSchema \ngetSchema \nMySql.typeMappings \ntypeMappings \nMySql.findClrType \nfindClrType \nMySql.findDbType \nfindDbType \nMySql.createCommandParameter \ncreateCommandParameter \nMySql.createParam \ncreateParam \nMySql.fieldNotationAlias \nfieldNotationAlias \nMySql.ripQuotes \nripQuotes \nMySql.createTypeMappings \ncreateTypeMappings \nMySql.createConnection \ncreateConnection \nMySql.createCommand \ncreateCommand \nMySql.getSprocReturnCols \ngetSprocReturnCols \nMySql.getSprocName \ngetSprocName \nMySql.getSprocParameters \ngetSprocParameters \nMySql.getSprocs \ngetSprocs \nMySql.readParameter \nreadParameter \nMySql.processReturnColumn \nprocessReturnColumn \nMySql.processReturnColumnAsync \nprocessReturnColumnAsync \nMySql.executeSprocCommandCommon \nexecuteSprocCommandCommon \nMySql.executeSprocCommand \nexecuteSprocCommand \nMySql.executeSprocCommandAsync \nexecuteSprocCommandAsync","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#resolutionPath","title":"MySql.resolutionPath","content":"MySql.resolutionPath \nresolutionPath \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#schemas","title":"MySql.schemas","content":"MySql.schemas \nschemas \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#referencedAssemblies","title":"MySql.referencedAssemblies","content":"MySql.referencedAssemblies \nreferencedAssemblies \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#assemblyNames","title":"MySql.assemblyNames","content":"MySql.assemblyNames \nassemblyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#assembly","title":"MySql.assembly","content":"MySql.assembly \nassembly \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#findType","title":"MySql.findType","content":"MySql.findType \nfindType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#connectionType","title":"MySql.connectionType","content":"MySql.connectionType \nconnectionType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#commandType","title":"MySql.commandType","content":"MySql.commandType \ncommandType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#parameterType","title":"MySql.parameterType","content":"MySql.parameterType \nparameterType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#enumType","title":"MySql.enumType","content":"MySql.enumType \nenumType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#getSchemaMethod","title":"MySql.getSchemaMethod","content":"MySql.getSchemaMethod \ngetSchemaMethod \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#getSchema","title":"MySql.getSchema","content":"MySql.getSchema \ngetSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#typeMappings","title":"MySql.typeMappings","content":"MySql.typeMappings \ntypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#findClrType","title":"MySql.findClrType","content":"MySql.findClrType \nfindClrType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#findDbType","title":"MySql.findDbType","content":"MySql.findDbType \nfindDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#createCommandParameter","title":"MySql.createCommandParameter","content":"MySql.createCommandParameter \ncreateCommandParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#createParam","title":"MySql.createParam","content":"MySql.createParam \ncreateParam \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#fieldNotationAlias","title":"MySql.fieldNotationAlias","content":"MySql.fieldNotationAlias \nfieldNotationAlias \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#ripQuotes","title":"MySql.ripQuotes","content":"MySql.ripQuotes \nripQuotes \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#createTypeMappings","title":"MySql.createTypeMappings","content":"MySql.createTypeMappings \ncreateTypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#createConnection","title":"MySql.createConnection","content":"MySql.createConnection \ncreateConnection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#createCommand","title":"MySql.createCommand","content":"MySql.createCommand \ncreateCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#getSprocReturnCols","title":"MySql.getSprocReturnCols","content":"MySql.getSprocReturnCols \ngetSprocReturnCols \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#getSprocName","title":"MySql.getSprocName","content":"MySql.getSprocName \ngetSprocName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#getSprocParameters","title":"MySql.getSprocParameters","content":"MySql.getSprocParameters \ngetSprocParameters \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#getSprocs","title":"MySql.getSprocs","content":"MySql.getSprocs \ngetSprocs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#readParameter","title":"MySql.readParameter","content":"MySql.readParameter \nreadParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#processReturnColumn","title":"MySql.processReturnColumn","content":"MySql.processReturnColumn \nprocessReturnColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#processReturnColumnAsync","title":"MySql.processReturnColumnAsync","content":"MySql.processReturnColumnAsync \nprocessReturnColumnAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#executeSprocCommandCommon","title":"MySql.executeSprocCommandCommon","content":"MySql.executeSprocCommandCommon \nexecuteSprocCommandCommon \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#executeSprocCommand","title":"MySql.executeSprocCommand","content":"MySql.executeSprocCommand \nexecuteSprocCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-mysql.html#executeSprocCommandAsync","title":"MySql.executeSprocCommandAsync","content":"MySql.executeSprocCommandAsync \nexecuteSprocCommandAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html","title":"PostgreSQL","content":"PostgreSQL \n \nPostgreSQL.resolutionPath \nresolutionPath \nPostgreSQL.schemas \nschemas \nPostgreSQL.referencedAssemblies \nreferencedAssemblies \nPostgreSQL.assemblyNames \nassemblyNames \nPostgreSQL.ANONYMOUS_PARAMETER_NAME \nANONYMOUS_PARAMETER_NAME \nPostgreSQL.assembly \nassembly \nPostgreSQL.isLegacyVersion \nisLegacyVersion \nPostgreSQL.findType \nfindType \nPostgreSQL.getType \ngetType \nPostgreSQL.connectionType \nconnectionType \nPostgreSQL.commandType \ncommandType \nPostgreSQL.parameterType \nparameterType \nPostgreSQL.dbType \ndbType \nPostgreSQL.dbTypeGetter \ndbTypeGetter \nPostgreSQL.dbTypeSetter \ndbTypeSetter \nPostgreSQL.getDbType \ngetDbType \nPostgreSQL.findDbType \nfindDbType \nPostgreSQL.parseDbType \nparseDbType \nPostgreSQL.tryReadValueProperty \ntryReadValueProperty \nPostgreSQL.isOptionValue \nisOptionValue \nPostgreSQL.createCommandParameter \ncreateCommandParameter \nPostgreSQL.fieldNotationAlias \nfieldNotationAlias \nPostgreSQL.arrayProviderDbType \narrayProviderDbType \nPostgreSQL.typemap\u0027 \ntypemap\u0027 \nPostgreSQL.typemap \ntypemap \nPostgreSQL.namemap \nnamemap \nPostgreSQL.createTypeMappings \ncreateTypeMappings \nPostgreSQL.createConnection \ncreateConnection \nPostgreSQL.createCommand \ncreateCommand \nPostgreSQL.readParameter \nreadParameter \nPostgreSQL.executeSprocCommandCommon \nexecuteSprocCommandCommon \nPostgreSQL.executeSprocCommand \nexecuteSprocCommand \nPostgreSQL.executeSprocCommandAsync \nexecuteSprocCommandAsync \nPostgreSQL.getSprocs \ngetSprocs","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#resolutionPath","title":"PostgreSQL.resolutionPath","content":"PostgreSQL.resolutionPath \nresolutionPath \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#schemas","title":"PostgreSQL.schemas","content":"PostgreSQL.schemas \nschemas \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#referencedAssemblies","title":"PostgreSQL.referencedAssemblies","content":"PostgreSQL.referencedAssemblies \nreferencedAssemblies \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#assemblyNames","title":"PostgreSQL.assemblyNames","content":"PostgreSQL.assemblyNames \nassemblyNames \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#ANONYMOUS_PARAMETER_NAME","title":"PostgreSQL.ANONYMOUS_PARAMETER_NAME","content":"PostgreSQL.ANONYMOUS_PARAMETER_NAME \nANONYMOUS_PARAMETER_NAME \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#assembly","title":"PostgreSQL.assembly","content":"PostgreSQL.assembly \nassembly \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#isLegacyVersion","title":"PostgreSQL.isLegacyVersion","content":"PostgreSQL.isLegacyVersion \nisLegacyVersion \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#findType","title":"PostgreSQL.findType","content":"PostgreSQL.findType \nfindType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#getType","title":"PostgreSQL.getType","content":"PostgreSQL.getType \ngetType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#connectionType","title":"PostgreSQL.connectionType","content":"PostgreSQL.connectionType \nconnectionType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#commandType","title":"PostgreSQL.commandType","content":"PostgreSQL.commandType \ncommandType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#parameterType","title":"PostgreSQL.parameterType","content":"PostgreSQL.parameterType \nparameterType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#dbType","title":"PostgreSQL.dbType","content":"PostgreSQL.dbType \ndbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#dbTypeGetter","title":"PostgreSQL.dbTypeGetter","content":"PostgreSQL.dbTypeGetter \ndbTypeGetter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#dbTypeSetter","title":"PostgreSQL.dbTypeSetter","content":"PostgreSQL.dbTypeSetter \ndbTypeSetter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#getDbType","title":"PostgreSQL.getDbType","content":"PostgreSQL.getDbType \ngetDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#findDbType","title":"PostgreSQL.findDbType","content":"PostgreSQL.findDbType \nfindDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#parseDbType","title":"PostgreSQL.parseDbType","content":"PostgreSQL.parseDbType \nparseDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#tryReadValueProperty","title":"PostgreSQL.tryReadValueProperty","content":"PostgreSQL.tryReadValueProperty \ntryReadValueProperty \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#isOptionValue","title":"PostgreSQL.isOptionValue","content":"PostgreSQL.isOptionValue \nisOptionValue \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#createCommandParameter","title":"PostgreSQL.createCommandParameter","content":"PostgreSQL.createCommandParameter \ncreateCommandParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#fieldNotationAlias","title":"PostgreSQL.fieldNotationAlias","content":"PostgreSQL.fieldNotationAlias \nfieldNotationAlias \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#arrayProviderDbType","title":"PostgreSQL.arrayProviderDbType","content":"PostgreSQL.arrayProviderDbType \narrayProviderDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#typemap\u0027","title":"PostgreSQL.typemap\u0027","content":"PostgreSQL.typemap\u0027 \ntypemap\u0027 \n Pairs a CLR type by type object with a value of Npgsql\u0027s type enumeration","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#typemap","title":"PostgreSQL.typemap","content":"PostgreSQL.typemap \ntypemap \n Pairs a CLR type by type parameter with a value of Npgsql\u0027s type enumeration","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#namemap","title":"PostgreSQL.namemap","content":"PostgreSQL.namemap \nnamemap \n Pairs a CLR type by name with a value of Npgsql\u0027s type enumeration","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#createTypeMappings","title":"PostgreSQL.createTypeMappings","content":"PostgreSQL.createTypeMappings \ncreateTypeMappings \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#createConnection","title":"PostgreSQL.createConnection","content":"PostgreSQL.createConnection \ncreateConnection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#createCommand","title":"PostgreSQL.createCommand","content":"PostgreSQL.createCommand \ncreateCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#readParameter","title":"PostgreSQL.readParameter","content":"PostgreSQL.readParameter \nreadParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#executeSprocCommandCommon","title":"PostgreSQL.executeSprocCommandCommon","content":"PostgreSQL.executeSprocCommandCommon \nexecuteSprocCommandCommon \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#executeSprocCommand","title":"PostgreSQL.executeSprocCommand","content":"PostgreSQL.executeSprocCommand \nexecuteSprocCommand \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#executeSprocCommandAsync","title":"PostgreSQL.executeSprocCommandAsync","content":"PostgreSQL.executeSprocCommandAsync \nexecuteSprocCommandAsync \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-providers-postgresql.html#getSprocs","title":"PostgreSQL.getSprocs","content":"PostgreSQL.getSprocs \ngetSprocs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-seq.html","title":"Seq","content":"Seq \n \nSeq.sumQuery \nsumQuery \nSeq.maxQuery \nmaxQuery \nSeq.minQuery \nminQuery \nSeq.averageQuery \naverageQuery \nSeq.stdDevQuery \nstdDevQuery \nSeq.varianceQuery \nvarianceQuery","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-seq.html#sumQuery","title":"Seq.sumQuery","content":"Seq.sumQuery \nsumQuery \n Execute SQLProvider query to get the sum of elements.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-seq.html#maxQuery","title":"Seq.maxQuery","content":"Seq.maxQuery \nmaxQuery \n Execute SQLProvider query to get the max of elements.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-seq.html#minQuery","title":"Seq.minQuery","content":"Seq.minQuery \nminQuery \n Execute SQLProvider query to get the min of elements.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-seq.html#averageQuery","title":"Seq.averageQuery","content":"Seq.averageQuery \naverageQuery \n Execute SQLProvider query to get the avg of elements.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-seq.html#stdDevQuery","title":"Seq.stdDevQuery","content":"Seq.stdDevQuery \nstdDevQuery \n Execute SQLProvider query to get the standard deviation of elements.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-seq.html#varianceQuery","title":"Seq.varianceQuery","content":"Seq.varianceQuery \nvarianceQuery \n Execute SQLProvider query to get the variance of elements.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-casttuplemaker-7.html","title":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E","content":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E \n \nCastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple2 \nmakeTuple2 \nCastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple3 \nmakeTuple3 \nCastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple4 \nmakeTuple4 \nCastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple5 \nmakeTuple5 \nCastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple6 \nmakeTuple6 \nCastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple7 \nmakeTuple7","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-casttuplemaker-7.html#makeTuple2","title":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple2","content":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple2 \nmakeTuple2 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-casttuplemaker-7.html#makeTuple3","title":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple3","content":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple3 \nmakeTuple3 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-casttuplemaker-7.html#makeTuple4","title":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple4","content":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple4 \nmakeTuple4 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-casttuplemaker-7.html#makeTuple5","title":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple5","content":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple5 \nmakeTuple5 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-casttuplemaker-7.html#makeTuple6","title":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple6","content":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple6 \nmakeTuple6 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-casttuplemaker-7.html#makeTuple7","title":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple7","content":"CastTupleMaker\u003C\u0027T1, \u0027T2, \u0027T3, \u0027T4, \u0027T5, \u0027T6, \u0027T7\u003E.makeTuple7 \nmakeTuple7 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-sqldatacontext.html","title":"SqlDataContext","content":"SqlDataContext \n \nSqlDataContext.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-runtime-sqldatacontext.html#\u0060\u0060.ctor\u0060\u0060","title":"SqlDataContext.\u0060\u0060.ctor\u0060\u0060","content":"SqlDataContext.\u0060\u0060.ctor\u0060\u0060 \n\u0060\u0060.ctor\u0060\u0060 \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html","title":"Column","content":"Column \n \nColumn.FromQueryParameter \nFromQueryParameter \nColumn.Name \nName \nColumn.TypeMapping \nTypeMapping \nColumn.IsPrimaryKey \nIsPrimaryKey \nColumn.IsNullable \nIsNullable \nColumn.IsAutonumber \nIsAutonumber \nColumn.HasDefault \nHasDefault \nColumn.IsComputed \nIsComputed \nColumn.TypeInfo \nTypeInfo","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#FromQueryParameter","title":"Column.FromQueryParameter","content":"Column.FromQueryParameter \nFromQueryParameter \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#Name","title":"Column.Name","content":"Column.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#TypeMapping","title":"Column.TypeMapping","content":"Column.TypeMapping \nTypeMapping \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#IsPrimaryKey","title":"Column.IsPrimaryKey","content":"Column.IsPrimaryKey \nIsPrimaryKey \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#IsNullable","title":"Column.IsNullable","content":"Column.IsNullable \nIsNullable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#IsAutonumber","title":"Column.IsAutonumber","content":"Column.IsAutonumber \nIsAutonumber \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#HasDefault","title":"Column.HasDefault","content":"Column.HasDefault \nHasDefault \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#IsComputed","title":"Column.IsComputed","content":"Column.IsComputed \nIsComputed \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-column.html#TypeInfo","title":"Column.TypeInfo","content":"Column.TypeInfo \nTypeInfo \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-columnlookup.html","title":"ColumnLookup","content":"ColumnLookup \n \nColumnLookup.Keys \nKeys \nColumnLookup.Values \nValues \nColumnLookup.IsEmpty \nIsEmpty \nColumnLookup.Count \nCount \nColumnLookup.Item \nItem","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-columnlookup.html#Keys","title":"ColumnLookup.Keys","content":"ColumnLookup.Keys \nKeys \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-columnlookup.html#Values","title":"ColumnLookup.Values","content":"ColumnLookup.Values \nValues \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-columnlookup.html#IsEmpty","title":"ColumnLookup.IsEmpty","content":"ColumnLookup.IsEmpty \nIsEmpty \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-columnlookup.html#Count","title":"ColumnLookup.Count","content":"ColumnLookup.Count \nCount \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-columnlookup.html#Item","title":"ColumnLookup.Item","content":"ColumnLookup.Item \nItem \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-compiletimepackagedefinition.html","title":"CompileTimePackageDefinition","content":"CompileTimePackageDefinition \n \nCompileTimePackageDefinition.Name \nName \nCompileTimePackageDefinition.Sprocs \nSprocs","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-compiletimepackagedefinition.html#Name","title":"CompileTimePackageDefinition.Name","content":"CompileTimePackageDefinition.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-compiletimepackagedefinition.html#Sprocs","title":"CompileTimePackageDefinition.Sprocs","content":"CompileTimePackageDefinition.Sprocs \nSprocs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-compiletimesprocdefinition.html","title":"CompileTimeSprocDefinition","content":"CompileTimeSprocDefinition \n \nCompileTimeSprocDefinition.Name \nName \nCompileTimeSprocDefinition.Params \nParams \nCompileTimeSprocDefinition.ReturnColumns \nReturnColumns","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-compiletimesprocdefinition.html#Name","title":"CompileTimeSprocDefinition.Name","content":"CompileTimeSprocDefinition.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-compiletimesprocdefinition.html#Params","title":"CompileTimeSprocDefinition.Params","content":"CompileTimeSprocDefinition.Params \nParams \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-compiletimesprocdefinition.html#ReturnColumns","title":"CompileTimeSprocDefinition.ReturnColumns","content":"CompileTimeSprocDefinition.ReturnColumns \nReturnColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-queryparameter.html","title":"QueryParameter","content":"QueryParameter \n \nQueryParameter.Create \nCreate \nQueryParameter.Name \nName \nQueryParameter.TypeMapping \nTypeMapping \nQueryParameter.Direction \nDirection \nQueryParameter.Length \nLength \nQueryParameter.Ordinal \nOrdinal","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-queryparameter.html#Create","title":"QueryParameter.Create","content":"QueryParameter.Create \nCreate \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-queryparameter.html#Name","title":"QueryParameter.Name","content":"QueryParameter.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-queryparameter.html#TypeMapping","title":"QueryParameter.TypeMapping","content":"QueryParameter.TypeMapping \nTypeMapping \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-queryparameter.html#Direction","title":"QueryParameter.Direction","content":"QueryParameter.Direction \nDirection \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-queryparameter.html#Length","title":"QueryParameter.Length","content":"QueryParameter.Length \nLength \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-queryparameter.html#Ordinal","title":"QueryParameter.Ordinal","content":"QueryParameter.Ordinal \nOrdinal \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-relationship.html","title":"Relationship","content":"Relationship \n \nRelationship.Name \nName \nRelationship.PrimaryTable \nPrimaryTable \nRelationship.PrimaryKey \nPrimaryKey \nRelationship.ForeignTable \nForeignTable \nRelationship.ForeignKey \nForeignKey","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-relationship.html#Name","title":"Relationship.Name","content":"Relationship.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-relationship.html#PrimaryTable","title":"Relationship.PrimaryTable","content":"Relationship.PrimaryTable \nPrimaryTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-relationship.html#PrimaryKey","title":"Relationship.PrimaryKey","content":"Relationship.PrimaryKey \nPrimaryKey \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-relationship.html#ForeignTable","title":"Relationship.ForeignTable","content":"Relationship.ForeignTable \nForeignTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-relationship.html#ForeignKey","title":"Relationship.ForeignKey","content":"Relationship.ForeignKey \nForeignKey \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-runtimesprocdefinition.html","title":"RunTimeSprocDefinition","content":"RunTimeSprocDefinition \n \nRunTimeSprocDefinition.Name \nName \nRunTimeSprocDefinition.Params \nParams","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-runtimesprocdefinition.html#Name","title":"RunTimeSprocDefinition.Name","content":"RunTimeSprocDefinition.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-runtimesprocdefinition.html#Params","title":"RunTimeSprocDefinition.Params","content":"RunTimeSprocDefinition.Params \nParams \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sproc.html","title":"Sproc","content":"Sproc \n \nSproc.GetKnownTypes \nGetKnownTypes \nSproc.Root \nRoot \nSproc.Package \nPackage \nSproc.Sproc \nSproc \nSproc.Empty \nEmpty","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sproc.html#GetKnownTypes","title":"Sproc.GetKnownTypes","content":"Sproc.GetKnownTypes \nGetKnownTypes \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sproc.html#Root","title":"Sproc.Root","content":"Sproc.Root \nRoot \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sproc.html#Package","title":"Sproc.Package","content":"Sproc.Package \nPackage \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sproc.html#Sproc","title":"Sproc.Sproc","content":"Sproc.Sproc \nSproc \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sproc.html#Empty","title":"Sproc.Empty","content":"Sproc.Empty \nEmpty \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sprocname.html","title":"SprocName","content":"SprocName \n \nSprocName.ToList \nToList \nSprocName.FriendlyName \nFriendlyName \nSprocName.DbName \nDbName \nSprocName.FullName \nFullName \nSprocName.ProcName \nProcName \nSprocName.Owner \nOwner \nSprocName.PackageName \nPackageName","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sprocname.html#ToList","title":"SprocName.ToList","content":"SprocName.ToList \nToList \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sprocname.html#FriendlyName","title":"SprocName.FriendlyName","content":"SprocName.FriendlyName \nFriendlyName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sprocname.html#DbName","title":"SprocName.DbName","content":"SprocName.DbName \nDbName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sprocname.html#FullName","title":"SprocName.FullName","content":"SprocName.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sprocname.html#ProcName","title":"SprocName.ProcName","content":"SprocName.ProcName \nProcName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sprocname.html#Owner","title":"SprocName.Owner","content":"SprocName.Owner \nOwner \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-sprocname.html#PackageName","title":"SprocName.PackageName","content":"SprocName.PackageName \nPackageName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html","title":"Table","content":"Table \n \nTable.QuotedFullName \nQuotedFullName \nTable.FullName \nFullName \nTable.CreateFullName \nCreateFullName \nTable.CreateQuotedFullName \nCreateQuotedFullName \nTable.FromFullName \nFromFullName \nTable.Schema \nSchema \nTable.Name \nName \nTable.Type \nType","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html#QuotedFullName","title":"Table.QuotedFullName","content":"Table.QuotedFullName \nQuotedFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html#FullName","title":"Table.FullName","content":"Table.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html#CreateFullName","title":"Table.CreateFullName","content":"Table.CreateFullName \nCreateFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html#CreateQuotedFullName","title":"Table.CreateQuotedFullName","content":"Table.CreateQuotedFullName \nCreateQuotedFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html#FromFullName","title":"Table.FromFullName","content":"Table.FromFullName \nFromFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html#Schema","title":"Table.Schema","content":"Table.Schema \nSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html#Name","title":"Table.Name","content":"Table.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-table.html#Type","title":"Table.Type","content":"Table.Type \nType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-typemapping.html","title":"TypeMapping","content":"TypeMapping \n \nTypeMapping.Create \nCreate \nTypeMapping.ProviderTypeName \nProviderTypeName \nTypeMapping.ClrType \nClrType \nTypeMapping.ProviderType \nProviderType \nTypeMapping.DbType \nDbType","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-typemapping.html#Create","title":"TypeMapping.Create","content":"TypeMapping.Create \nCreate \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-typemapping.html#ProviderTypeName","title":"TypeMapping.ProviderTypeName","content":"TypeMapping.ProviderTypeName \nProviderTypeName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-typemapping.html#ClrType","title":"TypeMapping.ClrType","content":"TypeMapping.ClrType \nClrType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-typemapping.html#ProviderType","title":"TypeMapping.ProviderType","content":"TypeMapping.ProviderType \nProviderType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-schema-typemapping.html#DbType","title":"TypeMapping.DbType","content":"TypeMapping.DbType \nDbType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser.html","title":"DacpacParser","content":"DacpacParser \n \nDacpacParser.RegexParsers \nRegexParsers \nDacpacParser.CommentAnnotation \nCommentAnnotation \nDacpacParser.ConstraintColumn \nConstraintColumn \nDacpacParser.PrimaryKeyConstraint \nPrimaryKeyConstraint \nDacpacParser.RefTable \nRefTable \nDacpacParser.SsdtColumn \nSsdtColumn \nDacpacParser.SsdtDescriptionItem \nSsdtDescriptionItem \nDacpacParser.SsdtRelationship \nSsdtRelationship \nDacpacParser.SsdtSchema \nSsdtSchema \nDacpacParser.SsdtStoredProc \nSsdtStoredProc \nDacpacParser.SsdtStoredProcParam \nSsdtStoredProcParam \nDacpacParser.SsdtTable \nSsdtTable \nDacpacParser.SsdtUserDefinedDataType \nSsdtUserDefinedDataType \nDacpacParser.SsdtView \nSsdtView \nDacpacParser.SsdtViewColumn \nSsdtViewColumn \nDacpacParser.UDDTInheritedType \nUDDTInheritedType \nDacpacParser.UDDTName \nUDDTName \nDacpacParser.extractModelXml \nextractModelXml \nDacpacParser.toXmlNamespaceDoc \ntoXmlNamespaceDoc \nDacpacParser.attMaybe \nattMaybe \nDacpacParser.att \natt \nDacpacParser.parseXml \nparseXml","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser.html#extractModelXml","title":"DacpacParser.extractModelXml","content":"DacpacParser.extractModelXml \nextractModelXml \n Extracts model.xml from the given .dacpac file path.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser.html#toXmlNamespaceDoc","title":"DacpacParser.toXmlNamespaceDoc","content":"DacpacParser.toXmlNamespaceDoc \ntoXmlNamespaceDoc \n Returns a doc and node/nodes ns helper fns","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser.html#attMaybe","title":"DacpacParser.attMaybe","content":"DacpacParser.attMaybe \nattMaybe \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser.html#att","title":"DacpacParser.att","content":"DacpacParser.att \natt \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser.html#parseXml","title":"DacpacParser.parseXml","content":"DacpacParser.parseXml \nparseXml \n Parses the xml that is extracted from a .dacpac file.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html","title":"RegexParsers","content":"RegexParsers \n \nRegexParsers.tablePattern \ntablePattern \nRegexParsers.colPattern \ncolPattern \nRegexParsers.viewPattern \nviewPattern \nRegexParsers.splitFullName \nsplitFullName \nRegexParsers.parseTableColumnAnnotation \nparseTableColumnAnnotation \nRegexParsers.parseViewAnnotations \nparseViewAnnotations","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html#tablePattern","title":"RegexParsers.tablePattern","content":"RegexParsers.tablePattern \ntablePattern \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html#colPattern","title":"RegexParsers.colPattern","content":"RegexParsers.colPattern \ncolPattern \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html#viewPattern","title":"RegexParsers.viewPattern","content":"RegexParsers.viewPattern \nviewPattern \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html#splitFullName","title":"RegexParsers.splitFullName","content":"RegexParsers.splitFullName \nsplitFullName \n Splits a fully qualified name into parts. \n Name can start with a letter, _, @ or #. Names in square brackets can contain any char except for square brackets.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html#parseTableColumnAnnotation","title":"RegexParsers.parseTableColumnAnnotation","content":"RegexParsers.parseTableColumnAnnotation \nparseTableColumnAnnotation \n Tries to find an in-line commented type annotation in a computed table column.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html#parseViewAnnotations","title":"RegexParsers.parseViewAnnotations","content":"RegexParsers.parseViewAnnotations \nparseViewAnnotations \n Tries to find in-line commented type annotations in a view declaration.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-commentannotation.html","title":"CommentAnnotation","content":"CommentAnnotation \n \nCommentAnnotation.Column \nColumn \nCommentAnnotation.DataType \nDataType \nCommentAnnotation.Nullability \nNullability","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-commentannotation.html#Column","title":"CommentAnnotation.Column","content":"CommentAnnotation.Column \nColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-commentannotation.html#DataType","title":"CommentAnnotation.DataType","content":"CommentAnnotation.DataType \nDataType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-commentannotation.html#Nullability","title":"CommentAnnotation.Nullability","content":"CommentAnnotation.Nullability \nNullability \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-constraintcolumn.html","title":"ConstraintColumn","content":"ConstraintColumn \n \nConstraintColumn.FullName \nFullName \nConstraintColumn.Name \nName","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-constraintcolumn.html#FullName","title":"ConstraintColumn.FullName","content":"ConstraintColumn.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-constraintcolumn.html#Name","title":"ConstraintColumn.Name","content":"ConstraintColumn.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-primarykeyconstraint.html","title":"PrimaryKeyConstraint","content":"PrimaryKeyConstraint \n \nPrimaryKeyConstraint.Name \nName \nPrimaryKeyConstraint.Columns \nColumns","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-primarykeyconstraint.html#Name","title":"PrimaryKeyConstraint.Name","content":"PrimaryKeyConstraint.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-primarykeyconstraint.html#Columns","title":"PrimaryKeyConstraint.Columns","content":"PrimaryKeyConstraint.Columns \nColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-reftable.html","title":"RefTable","content":"RefTable \n \nRefTable.FullName \nFullName \nRefTable.Schema \nSchema \nRefTable.Name \nName \nRefTable.Columns \nColumns","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-reftable.html#FullName","title":"RefTable.FullName","content":"RefTable.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-reftable.html#Schema","title":"RefTable.Schema","content":"RefTable.Schema \nSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-reftable.html#Name","title":"RefTable.Name","content":"RefTable.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-reftable.html#Columns","title":"RefTable.Columns","content":"RefTable.Columns \nColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html","title":"SsdtColumn","content":"SsdtColumn \n \nSsdtColumn.FullName \nFullName \nSsdtColumn.Name \nName \nSsdtColumn.Description \nDescription \nSsdtColumn.DataType \nDataType \nSsdtColumn.AllowNulls \nAllowNulls \nSsdtColumn.IsIdentity \nIsIdentity \nSsdtColumn.HasDefault \nHasDefault \nSsdtColumn.ComputedColumn \nComputedColumn","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html#FullName","title":"SsdtColumn.FullName","content":"SsdtColumn.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html#Name","title":"SsdtColumn.Name","content":"SsdtColumn.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html#Description","title":"SsdtColumn.Description","content":"SsdtColumn.Description \nDescription \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html#DataType","title":"SsdtColumn.DataType","content":"SsdtColumn.DataType \nDataType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html#AllowNulls","title":"SsdtColumn.AllowNulls","content":"SsdtColumn.AllowNulls \nAllowNulls \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html#IsIdentity","title":"SsdtColumn.IsIdentity","content":"SsdtColumn.IsIdentity \nIsIdentity \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html#HasDefault","title":"SsdtColumn.HasDefault","content":"SsdtColumn.HasDefault \nHasDefault \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html#ComputedColumn","title":"SsdtColumn.ComputedColumn","content":"SsdtColumn.ComputedColumn \nComputedColumn \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtdescriptionitem.html","title":"SsdtDescriptionItem","content":"SsdtDescriptionItem \n \nSsdtDescriptionItem.DecriptionType \nDecriptionType \nSsdtDescriptionItem.Schema \nSchema \nSsdtDescriptionItem.TableName \nTableName \nSsdtDescriptionItem.ColumnName \nColumnName \nSsdtDescriptionItem.Description \nDescription","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtdescriptionitem.html#DecriptionType","title":"SsdtDescriptionItem.DecriptionType","content":"SsdtDescriptionItem.DecriptionType \nDecriptionType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtdescriptionitem.html#Schema","title":"SsdtDescriptionItem.Schema","content":"SsdtDescriptionItem.Schema \nSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtdescriptionitem.html#TableName","title":"SsdtDescriptionItem.TableName","content":"SsdtDescriptionItem.TableName \nTableName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtdescriptionitem.html#ColumnName","title":"SsdtDescriptionItem.ColumnName","content":"SsdtDescriptionItem.ColumnName \nColumnName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtdescriptionitem.html#Description","title":"SsdtDescriptionItem.Description","content":"SsdtDescriptionItem.Description \nDescription \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtrelationship.html","title":"SsdtRelationship","content":"SsdtRelationship \n \nSsdtRelationship.Name \nName \nSsdtRelationship.DefiningTable \nDefiningTable \nSsdtRelationship.ForeignTable \nForeignTable","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtrelationship.html#Name","title":"SsdtRelationship.Name","content":"SsdtRelationship.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtrelationship.html#DefiningTable","title":"SsdtRelationship.DefiningTable","content":"SsdtRelationship.DefiningTable \nDefiningTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtrelationship.html#ForeignTable","title":"SsdtRelationship.ForeignTable","content":"SsdtRelationship.ForeignTable \nForeignTable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html","title":"SsdtSchema","content":"SsdtSchema \n \nSsdtSchema.Tables \nTables \nSsdtSchema.TryGetTableByName \nTryGetTableByName \nSsdtSchema.StoredProcs \nStoredProcs \nSsdtSchema.Relationships \nRelationships \nSsdtSchema.Descriptions \nDescriptions \nSsdtSchema.UserDefinedDataTypes \nUserDefinedDataTypes","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html#Tables","title":"SsdtSchema.Tables","content":"SsdtSchema.Tables \nTables \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html#TryGetTableByName","title":"SsdtSchema.TryGetTableByName","content":"SsdtSchema.TryGetTableByName \nTryGetTableByName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html#StoredProcs","title":"SsdtSchema.StoredProcs","content":"SsdtSchema.StoredProcs \nStoredProcs \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html#Relationships","title":"SsdtSchema.Relationships","content":"SsdtSchema.Relationships \nRelationships \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html#Descriptions","title":"SsdtSchema.Descriptions","content":"SsdtSchema.Descriptions \nDescriptions \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html#UserDefinedDataTypes","title":"SsdtSchema.UserDefinedDataTypes","content":"SsdtSchema.UserDefinedDataTypes \nUserDefinedDataTypes \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredproc.html","title":"SsdtStoredProc","content":"SsdtStoredProc \n \nSsdtStoredProc.FullName \nFullName \nSsdtStoredProc.Schema \nSchema \nSsdtStoredProc.Name \nName \nSsdtStoredProc.Parameters \nParameters","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredproc.html#FullName","title":"SsdtStoredProc.FullName","content":"SsdtStoredProc.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredproc.html#Schema","title":"SsdtStoredProc.Schema","content":"SsdtStoredProc.Schema \nSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredproc.html#Name","title":"SsdtStoredProc.Name","content":"SsdtStoredProc.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredproc.html#Parameters","title":"SsdtStoredProc.Parameters","content":"SsdtStoredProc.Parameters \nParameters \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredprocparam.html","title":"SsdtStoredProcParam","content":"SsdtStoredProcParam \n \nSsdtStoredProcParam.FullName \nFullName \nSsdtStoredProcParam.Name \nName \nSsdtStoredProcParam.DataType \nDataType \nSsdtStoredProcParam.Length \nLength \nSsdtStoredProcParam.IsOutput \nIsOutput","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredprocparam.html#FullName","title":"SsdtStoredProcParam.FullName","content":"SsdtStoredProcParam.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredprocparam.html#Name","title":"SsdtStoredProcParam.Name","content":"SsdtStoredProcParam.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredprocparam.html#DataType","title":"SsdtStoredProcParam.DataType","content":"SsdtStoredProcParam.DataType \nDataType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredprocparam.html#Length","title":"SsdtStoredProcParam.Length","content":"SsdtStoredProcParam.Length \nLength \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredprocparam.html#IsOutput","title":"SsdtStoredProcParam.IsOutput","content":"SsdtStoredProcParam.IsOutput \nIsOutput \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html","title":"SsdtTable","content":"SsdtTable \n \nSsdtTable.FullName \nFullName \nSsdtTable.Schema \nSchema \nSsdtTable.Name \nName \nSsdtTable.Columns \nColumns \nSsdtTable.PrimaryKey \nPrimaryKey \nSsdtTable.IsView \nIsView","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html#FullName","title":"SsdtTable.FullName","content":"SsdtTable.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html#Schema","title":"SsdtTable.Schema","content":"SsdtTable.Schema \nSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html#Name","title":"SsdtTable.Name","content":"SsdtTable.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html#Columns","title":"SsdtTable.Columns","content":"SsdtTable.Columns \nColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html#PrimaryKey","title":"SsdtTable.PrimaryKey","content":"SsdtTable.PrimaryKey \nPrimaryKey \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html#IsView","title":"SsdtTable.IsView","content":"SsdtTable.IsView \nIsView \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtuserdefineddatatype.html","title":"SsdtUserDefinedDataType","content":"SsdtUserDefinedDataType \n \nSsdtUserDefinedDataType.Keys \nKeys \nSsdtUserDefinedDataType.Values \nValues \nSsdtUserDefinedDataType.IsEmpty \nIsEmpty \nSsdtUserDefinedDataType.Count \nCount \nSsdtUserDefinedDataType.Item \nItem","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtuserdefineddatatype.html#Keys","title":"SsdtUserDefinedDataType.Keys","content":"SsdtUserDefinedDataType.Keys \nKeys \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtuserdefineddatatype.html#Values","title":"SsdtUserDefinedDataType.Values","content":"SsdtUserDefinedDataType.Values \nValues \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtuserdefineddatatype.html#IsEmpty","title":"SsdtUserDefinedDataType.IsEmpty","content":"SsdtUserDefinedDataType.IsEmpty \nIsEmpty \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtuserdefineddatatype.html#Count","title":"SsdtUserDefinedDataType.Count","content":"SsdtUserDefinedDataType.Count \nCount \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtuserdefineddatatype.html#Item","title":"SsdtUserDefinedDataType.Item","content":"SsdtUserDefinedDataType.Item \nItem \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html","title":"SsdtView","content":"SsdtView \n \nSsdtView.FullName \nFullName \nSsdtView.Schema \nSchema \nSsdtView.Name \nName \nSsdtView.Columns \nColumns \nSsdtView.DynamicColumns \nDynamicColumns \nSsdtView.Annotations \nAnnotations","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html#FullName","title":"SsdtView.FullName","content":"SsdtView.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html#Schema","title":"SsdtView.Schema","content":"SsdtView.Schema \nSchema \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html#Name","title":"SsdtView.Name","content":"SsdtView.Name \nName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html#Columns","title":"SsdtView.Columns","content":"SsdtView.Columns \nColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html#DynamicColumns","title":"SsdtView.DynamicColumns","content":"SsdtView.DynamicColumns \nDynamicColumns \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html#Annotations","title":"SsdtView.Annotations","content":"SsdtView.Annotations \nAnnotations \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtviewcolumn.html","title":"SsdtViewColumn","content":"SsdtViewColumn \n \nSsdtViewColumn.FullName \nFullName \nSsdtViewColumn.ColumnRefPath \nColumnRefPath","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtviewcolumn.html#FullName","title":"SsdtViewColumn.FullName","content":"SsdtViewColumn.FullName \nFullName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtviewcolumn.html#ColumnRefPath","title":"SsdtViewColumn.ColumnRefPath","content":"SsdtViewColumn.ColumnRefPath \nColumnRefPath \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-uddtinheritedtype.html","title":"UDDTInheritedType","content":"UDDTInheritedType \n \nUDDTInheritedType.UDDTInheritedType \nUDDTInheritedType","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-uddtinheritedtype.html#UDDTInheritedType","title":"UDDTInheritedType.UDDTInheritedType","content":"UDDTInheritedType.UDDTInheritedType \nUDDTInheritedType \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-uddtname.html","title":"UDDTName","content":"UDDTName \n \nUDDTName.UDDTName \nUDDTName","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-ssdt-dacpacparser-uddtname.html#UDDTName","title":"UDDTName.UDDTName","content":"UDDTName.UDDTName \nUDDTName \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html","title":"IsolationLevel","content":"IsolationLevel \n Corresponds to the System.Transactions.IsolationLevel. \nIsolationLevel.Serializable \nSerializable \nIsolationLevel.RepeatableRead \nRepeatableRead \nIsolationLevel.ReadCommitted \nReadCommitted \nIsolationLevel.ReadUncommitted \nReadUncommitted \nIsolationLevel.Snapshot \nSnapshot \nIsolationLevel.Chaos \nChaos \nIsolationLevel.Unspecified \nUnspecified \nIsolationLevel.DontCreateTransaction \nDontCreateTransaction","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html#Serializable","title":"IsolationLevel.Serializable","content":"IsolationLevel.Serializable \nSerializable \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html#RepeatableRead","title":"IsolationLevel.RepeatableRead","content":"IsolationLevel.RepeatableRead \nRepeatableRead \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html#ReadCommitted","title":"IsolationLevel.ReadCommitted","content":"IsolationLevel.ReadCommitted \nReadCommitted \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html#ReadUncommitted","title":"IsolationLevel.ReadUncommitted","content":"IsolationLevel.ReadUncommitted \nReadUncommitted \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html#Snapshot","title":"IsolationLevel.Snapshot","content":"IsolationLevel.Snapshot \nSnapshot \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html#Chaos","title":"IsolationLevel.Chaos","content":"IsolationLevel.Chaos \nChaos \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html#Unspecified","title":"IsolationLevel.Unspecified","content":"IsolationLevel.Unspecified \nUnspecified \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-isolationlevel.html#DontCreateTransaction","title":"IsolationLevel.DontCreateTransaction","content":"IsolationLevel.DontCreateTransaction \nDontCreateTransaction \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-transactionoptions.html","title":"TransactionOptions","content":"TransactionOptions \n Corresponds to the System.Transactions.TransactionOptions. \nTransactionOptions.Default \nDefault \nTransactionOptions.Timeout \nTimeout \nTransactionOptions.IsolationLevel \nIsolationLevel","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-transactionoptions.html#Default","title":"TransactionOptions.Default","content":"TransactionOptions.Default \nDefault \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-transactionoptions.html#Timeout","title":"TransactionOptions.Timeout","content":"TransactionOptions.Timeout \nTimeout \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/fsharp-data-sql-transactions-transactionoptions.html#IsolationLevel","title":"TransactionOptions.IsolationLevel","content":"TransactionOptions.IsolationLevel \nIsolationLevel \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/global-expressionoptimizer.html","title":"ExpressionOptimizer","content":"ExpressionOptimizer \n This is just a light-weight expression optimizer.\n It won\u0027t do any heavy stuff... \nExpressionOptimizer.Methods \nMethods \nExpressionOptimizer.reductionMethods \nreductionMethods \nExpressionOptimizer.doReduction \ndoReduction \nExpressionOptimizer.visit \nvisit \nExpressionOptimizer.tryVisit \ntryVisit \nExpressionOptimizer.visitTyped \nvisitTyped \nExpressionOptimizer.tryVisitTyped \ntryVisitTyped","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/global-expressionoptimizer.html#reductionMethods","title":"ExpressionOptimizer.reductionMethods","content":"ExpressionOptimizer.reductionMethods \nreductionMethods \n Used optimization methods","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/global-expressionoptimizer.html#doReduction","title":"ExpressionOptimizer.doReduction","content":"ExpressionOptimizer.doReduction \ndoReduction \n Do reductions just for a current node?","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/global-expressionoptimizer.html#visit","title":"ExpressionOptimizer.visit","content":"ExpressionOptimizer.visit \nvisit \n Expression tree visitor: go through the whole expression tree.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/global-expressionoptimizer.html#tryVisit","title":"ExpressionOptimizer.tryVisit","content":"ExpressionOptimizer.tryVisit \ntryVisit \n Expression tree visitor: go through the whole expression tree.\n Catches the exceptions.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/global-expressionoptimizer.html#visitTyped","title":"ExpressionOptimizer.visitTyped","content":"ExpressionOptimizer.visitTyped \nvisitTyped \n Expression tree visitor: go through the whole expression tree.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/global-expressionoptimizer.html#tryVisitTyped","title":"ExpressionOptimizer.tryVisitTyped","content":"ExpressionOptimizer.tryVisitTyped \ntryVisitTyped \n Expression tree visitor: go through the whole expression tree.\n Catches the exceptions.","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html","title":"Methods","content":"Methods \n \nMethods.\u0060\u0060replace constant comparison\u0060\u0060 \n\u0060\u0060replace constant comparison\u0060\u0060 \nMethods.\u0060\u0060remove AnonymousType\u0060\u0060 \n\u0060\u0060remove AnonymousType\u0060\u0060 \nMethods.\u0060\u0060cut not used condition\u0060\u0060 \n\u0060\u0060cut not used condition\u0060\u0060 \nMethods.\u0060\u0060not false is true\u0060\u0060 \n\u0060\u0060not false is true\u0060\u0060 \nMethods.associate \nassociate \nMethods.commute \ncommute \nMethods.distribute \ndistribute \nMethods.gather \ngather \nMethods.identity \nidentity \nMethods.annihilate \nannihilate \nMethods.absorb \nabsorb \nMethods.idempotence \nidempotence \nMethods.complement \ncomplement \nMethods.doubleNegation \ndoubleNegation \nMethods.deMorgan \ndeMorgan \nMethods.balancetree \nbalancetree \nMethods.\u0060\u0060evaluate constants\u0060\u0060 \n\u0060\u0060evaluate constants\u0060\u0060 \nMethods.\u0060\u0060evaluate basic constant math\u0060\u0060 \n\u0060\u0060evaluate basic constant math\u0060\u0060","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#\u0060\u0060replace constant comparison\u0060\u0060","title":"Methods.\u0060\u0060replace constant comparison\u0060\u0060","content":"Methods.\u0060\u0060replace constant comparison\u0060\u0060 \n\u0060\u0060replace constant comparison\u0060\u0060 \n\u003Cpre\u003E The purpose of this is to optimize away already known constant=constant style expressions.\n 7 \u003E 8 --\u003E False\n \u0022G\u0022 = \u0022G\u0022 --\u003E True\u003C/pre\u003E","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#\u0060\u0060remove AnonymousType\u0060\u0060","title":"Methods.\u0060\u0060remove AnonymousType\u0060\u0060","content":"Methods.\u0060\u0060remove AnonymousType\u0060\u0060 \n\u0060\u0060remove AnonymousType\u0060\u0060 \n Purpose of this is to replace non-used anonymous types:\n new AnonymousObject(Item1 = x, Item2 = \u0022\u0022).Item1 --\u003E x","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#\u0060\u0060cut not used condition\u0060\u0060","title":"Methods.\u0060\u0060cut not used condition\u0060\u0060","content":"Methods.\u0060\u0060cut not used condition\u0060\u0060 \n\u0060\u0060cut not used condition\u0060\u0060 \n if false then x else y -\u003E y ","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#\u0060\u0060not false is true\u0060\u0060","title":"Methods.\u0060\u0060not false is true\u0060\u0060","content":"Methods.\u0060\u0060not false is true\u0060\u0060 \n\u0060\u0060not false is true\u0060\u0060 \n not(false) -\u003E true ","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#associate","title":"Methods.associate","content":"Methods.associate \nassociate \n Not in use, would cause looping...","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#commute","title":"Methods.commute","content":"Methods.commute \ncommute \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#distribute","title":"Methods.distribute","content":"Methods.distribute \ndistribute \n Not in use, would cause looping...","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#gather","title":"Methods.gather","content":"Methods.gather \ngather \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#identity","title":"Methods.identity","content":"Methods.identity \nidentity \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#annihilate","title":"Methods.annihilate","content":"Methods.annihilate \nannihilate \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#absorb","title":"Methods.absorb","content":"Methods.absorb \nabsorb \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#idempotence","title":"Methods.idempotence","content":"Methods.idempotence \nidempotence \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#complement","title":"Methods.complement","content":"Methods.complement \ncomplement \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#doubleNegation","title":"Methods.doubleNegation","content":"Methods.doubleNegation \ndoubleNegation \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#deMorgan","title":"Methods.deMorgan","content":"Methods.deMorgan \ndeMorgan \n","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#balancetree","title":"Methods.balancetree","content":"Methods.balancetree \nbalancetree \n Balance tree that is too much weighted to other side.\n The real advantage is not-so-nested-stack","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#\u0060\u0060evaluate constants\u0060\u0060","title":"Methods.\u0060\u0060evaluate constants\u0060\u0060","content":"Methods.\u0060\u0060evaluate constants\u0060\u0060 \n\u0060\u0060evaluate constants\u0060\u0060 \n Evaluating constants to not mess with our expressions:","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/reference/expressionoptimizer-methods.html#\u0060\u0060evaluate basic constant math\u0060\u0060","title":"Methods.\u0060\u0060evaluate basic constant math\u0060\u0060","content":"Methods.\u0060\u0060evaluate basic constant math\u0060\u0060 \n\u0060\u0060evaluate basic constant math\u0060\u0060 \n\u003Cpre\u003E Evaluate simple math between two constants.\n 9 * 3 --\u003E 27\n \u0022G\u0022 \u002B \u0022G\u0022 --\u003E \u0022GG\u0022\u003C/pre\u003E","headings":[],"type":"apiDocs"},{"uri":"https://fsprojects.github.io/SQLProvider/index.html","title":"SQLProvider\r\n","content":"SQLProvider\r\nA general .NET/Mono SQL database type provider. Current features:\r\n\r\nLINQ queries\r\nLazy schema exploration\r\nAutomatic constraint navigation\r\nIndividuals\r\nTransactional CRUD operations with identity support\r\nStored Procedures\r\nFunctions\r\nPackages (Oracle)\r\nComposable Query integration\r\nOptional option types\r\nMapping to record types\r\nCustom Operators\r\nSupports Asynchronous Operations\r\nSupports .NET Standard / .NET Core\r\nSupports saving DB schema offline, and SQL-Server *.dacpac files\r\n\r\nThe provider currently has explicit implementations for the following database vendors:\r\n\r\nSQL Server\r\nSQL Server SSDT\r\nSQLite\r\nPostgreSQL\r\nOracle\r\nMySQL\r\nMsAccess\r\nFirebird\r\nDuckDB\r\n\r\nThere is also an ODBC provider that will let you connect to any ODBC source with limited features.\r\nAll database vendors except SQL Server and MS Access will require 3rd party ADO.NET connector objects to function. These are dynamically loaded at runtime so that the SQL provider project is not dependent on them. You must supply the location of the assemblies with the \u0022ResolutionPath\u0022 static parameter.\r\nSQLite is based on the .NET drivers found here. You will need the correct version for your specific architecture and setup.\r\nPostgreSQL is based on the Npgsql .NET drivers found here. The type provider will make frequent calls to the database. Npgsql provides a set of performance related connection strings parameters for tweaking its performance\r\nMySQL is based on the .NET drivers found here. You will need the correct version for your specific architecture and setup. You also need to specify ResolutionPath, which points to the folder containing the dll files for the MySQL driver.\r\nOracle is based on the current release (12.1.0.1.2) of the managed ODP.NET driver found here. However, although the managed version is recommended, it should also work with previous versions of the native driver.\r\nSQL Server SSDT is based on the current release (160.20216.14) found here.\r\n\r\n \r\n \r\n \r\n The library can be installed from NuGet:\r\n PM\u003E Install-Package SQLProvider\r\n \r\n \r\n \r\n\r\nExample\r\n\r\nThis example demonstrates the use of the SQL type provider:\r\n// reference the type provider dll\r\n\r\n#r \u0026quot;../../bin/netstandard2.0/FSharp.Data.SqlProvider.dll\u0026quot;\r\n\r\nopen FSharp.Data.Sql\r\n\r\nlet [\u0026lt;Literal\u0026gt;] resolutionPath = __SOURCE_DIRECTORY__ \u002B @\u0026quot;/../files/sqlite\u0026quot; \r\nlet [\u0026lt;Literal\u0026gt;] connectionString = \u0026quot;Data Source=\u0026quot; \u002B __SOURCE_DIRECTORY__ \u002B @\u0026quot;\\northwindEF.db;Version=3;Read Only=false;FailIfMissing=True;\u0026quot;\r\n// create a type alias with the connection string and database vendor settings\r\ntype sql = SqlDataProvider\u0026lt; \r\n ConnectionString = connectionString,\r\n DatabaseVendor = Common.DatabaseProviderTypes.SQLITE,\r\n SQLiteLibrary=Common.SQLiteLibrary.SystemDataSQLite,\r\n ResolutionPath = resolutionPath,\r\n IndividualsAmount = 1000,\r\n UseOptionTypes = Common.NullableColumnType.OPTION\r\n \u0026gt;\r\nlet ctx = sql.GetDataContext()\r\n\r\n// To use dynamic runtime connectionString, you could use:\r\n// let ctx = sql.GetDataContext connectionString2\r\n\r\n// pick individual entities from the database \r\nlet christina = ctx.Main.Customers.Individuals.\u0060\u0060As ContactName\u0060\u0060.\u0060\u0060BERGS, Christina Berglund\u0060\u0060\r\n\r\n// directly enumerate an entity\u0026#39;s relationships, \r\n// this creates and triggers the relevant query in the background\r\nlet christinasOrders = christina.\u0060\u0060main.Orders by CustomerID\u0060\u0060 |\u0026gt; Seq.toArray\r\n\r\nlet mattisOrderDetails =\r\n query { for c in ctx.Main.Customers do\r\n // you can directly enumerate relationships with no join information\r\n for o in c.\u0060\u0060main.Orders by CustomerID\u0060\u0060 do\r\n // or you can explicitly join on the fields you choose\r\n join od in ctx.Main.OrderDetails on (o.OrderId = od.OrderId)\r\n // the (!!) operator will perform an outer join on a relationship\r\n for prod in (!!) od.\u0060\u0060main.Products by ProductID\u0060\u0060 do \r\n // nullable columns can be represented as option types; the following generates IS NOT NULL\r\n where o.ShipCountry.IsSome \r\n // standard operators will work as expected; the following shows the like operator and IN operator\r\n where (c.ContactName =% (\u0026quot;Matti%\u0026quot;) \u0026amp;\u0026amp; c.CompanyName |=| [|\u0026quot;Squirrelcomapny\u0026quot;;\u0026quot;DaveCompant\u0026quot;|] )\r\n sortBy o.ShipName\r\n // arbitrarily complex projections are supported\r\n select (c.ContactName,o.ShipAddress,o.ShipCountry,prod.ProductName,prod.UnitPrice) } \r\n |\u0026gt; Seq.toArray\r\n\r\nSamples \u0026amp; documentation\r\nThe library comes with comprehensive documentation.\r\n\r\nGeneral a high level view on the type providers\u0027 abilities and limitations\r\nStatic Parameters available static parameters\r\nQuerying information on supported LINQ keywords and custom operators with examples\r\nRelationships how to use automatic constraint navigation in your queries\r\nCRUD usage and limitations of transactional create - update - delete support\r\nProgrammability usage and limitations of stored procedures and functions\r\nIndividuals usage and limitations of this unique feature\r\nComposable Query information on integrating this project with the SQL provider\r\nMapping to record types\r\nUnit-testing your SQL-query logics without a database.\r\n\r\nAPI Reference contains automatically generated documentation for all types, modules\r\nand functions in the library.\r\n\r\n\r\nDatabase vendor specific issues and considerations are documented on their separate pages. Please see the menu on the right.\r\nContributing and copyright\r\nThe project is hosted on GitHub where you can report issues, fork\r\nthe project and submit pull requests. If you\u0027re adding new public API, please also\r\nconsider adding samples that can be turned into a documentation. You might\r\nalso want to read library design notes to understand how it works.\r\nOur tests have more samples. Learn more tech tech details.\r\nThe library is available under Public Domain license, which allows modification and\r\nredistribution for both commercial and non-commercial purposes. For more information see the\r\nLicense file in the GitHub repository.\r\n","headings":["SQLProvider","Example","Samples \u0026amp; documentation","Contributing and copyright"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/async.html","title":"Asynchronous Database Operation\r\n","content":"Asynchronous Database Operation\r\nYou get more performance by concurrency. The idea of async database operations\r\nis to release the business logics thread while the database is doing its job.\r\nThis can lead a huge performance difference on heavy traffic environment\r\n(basically, will your business logics server / web-server crash or not).\r\n\r\nIn the picture, we talk about the red block, which can be released to serve other customers.\r\nAs usual with async operations, there will be more thread context switching,\r\nwhich may cause minor performance delays, but concurrency benefits should outweigh the\r\ncontext switching cons.\r\nThis is the theory. In practice SQLProvider is calling implementation of async methods from\r\nabstract classes under System.Data.Common. The implementation quality of your database\r\nconnection .NET drivers will define if async is good for you or not. (E.g. The current\r\nsituation is that MS-SQL-server handles async well and MySQL not so.)\r\nCurrently SQLProvider supports async operations on runtime, not design-time.\r\nYour execution thread may change. For transactions to support this,\r\n.NET 4.5.1 has a fix for asynchronous transactions that has to be explicitly used.\r\nAsync queries and updates\r\nConcept for async queries is this:\r\nopen System\r\nopen System.Threading.Tasks\r\nopen FSharp.Data.Sql\r\n\r\ntype MyWebServer() = \r\n member __.\u0060\u0060Execute Business Logics\u0060\u0060 (id : Guid) : Task\u0026lt;_\u0026gt; = \r\n async {\r\n use transaction = \r\n new System.Transactions.TransactionScope(\r\n // .NET 4.5.1 fix for asynchronous transactions:\r\n System.Transactions.TransactionScopeAsyncFlowOption.Enabled\r\n )\r\n let context = TypeProviderConnection.GetDataContext cstr\r\n let! fetched =\r\n query {\r\n for t2 in context.MyDataBase.MyTable2 do\r\n join t1 in context.MyDataBase.MyTable1 on (t2.ForeignId = t1.Id)\r\n where (t2.Id = id)\r\n select (t1)\r\n } |\u0026gt; Seq.executeQueryAsync\r\n\r\n fetched |\u0026gt; Seq.iter (fun entity -\u0026gt;\r\n entity.SetColumn(\u0026quot;Updated\u0026quot;, DateTime.UtcNow |\u0026gt; box)\r\n )\r\n do! context.SubmitUpdatesAsync()\r\n\r\n transaction.Complete()\r\n return \u0026quot;done!\u0026quot;\r\n } |\u0026gt; Async.StartAsTask\r\n\r\nThe functions to work with asynchrony are:\r\n\r\nArray.executeQueryAsync : IQueryable -\u0026gt; Async []\u0026gt;\r\nList.executeQueryAsync : IQueryable -\u0026gt; Async\r\nSeq.executeQueryAsync : IQueryable -\u0026gt; Async\u0026gt;\r\nSeq.lengthAsync : IQueryable -\u0026gt; Async\r\nSeq.headAsync : IQueryable -\u0026gt; Async\r\nSeq.tryHeadAsync : IQueryable -\u0026gt; Async\r\nand for your data context: SubmitUpdatesAsync : unit -\u0026gt; Async\r\nSeq.sumAsync : IQueryable -\u0026gt; Async\r\nSeq.minAsync : IQueryable -\u0026gt; Async\r\nSeq.maxAsync : IQueryable -\u0026gt; Async\r\nSeq.averageAsync : IQueryable -\u0026gt; Async\r\nSeq.stdDevAsync : IQueryable -\u0026gt; Async\r\nSeq.varianceAsync : IQueryable -\u0026gt; Async\r\n\r\nSeq is .NET IEnumerable, which is lazy. So be careful if using Seq.executeQueryAsync\r\nto not execute your queries several times.\r\nAlso stored procedures do support InvokeAsync.\r\nDatabase asynchrony can\u0027t be used as a way to do parallelism inside one context.\r\nUsually database operations can\u0027t be executed as parallel inside one context/transaction.\r\nThat is an anti-pattern in general: the network lag between database and your logics server\r\nis probably the bottleneck of your system. So, in this order:\r\n\r\nTry to execute your business logics as database queries, as one big query.\r\nOr sometimes, not often, load eagerly data with single query and process it in the logics server.\r\nAvoid case that you create as many queries as your collection has items.\r\n\r\nSo if you are still in the worst case, 3, and have to deal with a List\u0026gt;, you cannot\r\nsay Async.Parallel as that may corrupt your data. To avoid custom imperative while-loops,\r\nwe have provided a little helper function for you, that is List.evaluateOneByOne.\r\nAvoid network traffic between business logics (BL) and database (DB).\r\nWhen you exit the query-computation, you cause the traffic.\r\nWhy Not to Use Async\r\nAs with all the technical choices, there are drawbacks to consider.\r\n\r\nYour codebase will be more complex. This will slow down your development speed if your developers are not F#-professionals.\r\nYou have to use other technologies that support async or .NET tasks, like WCF or SignalR. There is no point of doing async and then still using RunSynchronously at the end.\r\nYou may consider async as premature optimization. Starting without async and converting all later is an option, although your APIs will have to change.\r\nAsync and transactions is a problem with Mono environment.\r\nAsync will make your error stacktraces harder to read: You may be used to search your functions from the stacktrace to spot any problems. With async, you don\u0027t have your own code in the error-stack. At the time of e.g. SQL-exception, there is no thread waiting, your code is not actively running, there is no stack.\r\n\r\n","headings":["Asynchronous Database Operation","Async queries and updates","Database asynchrony can\u0027t be used as a way to do parallelism inside one context.","Why Not to Use Async"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/composable.html","title":"Composable Queries\r\n","content":"Composable Queries\r\nDefinition of Composable Queries\r\nBasicly composable methods are those that you can chain together to build the desired functionality out of smaller parts.\r\nBy passing functions as parameters you are able to generate higher-order query operations.\r\nTherefore composable query means that you can do logics to compose just one database-SQL-query from multiple queryables.\r\nBy using composable queries you can shorten the Database transactions and keep the connection open a minimum of time.\r\nOne common anti-pattern is a trial to solve all the problems in the world by a single code.\r\nSo when you use this kind of features to achieve \u0022common logics\u0022, keep in mind the software mainainability.\r\nOne solution is to add a database view and query that from SQLProvider.\r\nGenerate composable queries by using Linq IQueryable\r\nWith composable queries you can combine two queries in multiple ways, and one query can be used as the building block for the other query.\r\nTo see how this works, let\u2019s look at a simple query:\r\nlet query1 =\r\n query {\r\n for customers in ctx.Main.Customers do\r\n where (customers.ContactTitle = \u0026quot;USA\u0026quot;)\r\n select (customers)}\r\n\r\nThe variable that is returned from the query is sometimes called a computation. If you write evaluate\r\n(e.g. a foreach loop or |\u0026gt; Seq.toList) and display the address field from the customers returned by this\r\ncomputation, you see the following output:\r\nGREAL|Great Lakes Food Market|Howard Snyder|Marketing Manager|2732 Baker Blvd.|Eugene|OR|97403|USA|(503) 555-7555|\r\nHUNGC|Hungry Coyote Import Store|Yoshi Latimer|Sales Representative|City Center Plaza 516 Main St.|Elgin|OR|97827|USA|(503) 555-6874|(503) 555-2376\r\n...\r\nTRAIH|Trail\u0026#39;s Head Gourmet Provisioners|Helvetius Nagy|Sales Associate|722 DaVinci Blvd.|Kirkland|WA|98034|USA|(206) 555-8257|(206) 555-2174\r\nWHITC|White Clover Markets|Karl Jablonski|Owner|305 - 14th Ave. S. Suite 3B|Seattle|WA|98128|USA|(206) 555-4112|(206) 555-4115\r\n\r\nYou can now write a second query against the result of this query:\r\nlet query2 =\r\n query {\r\n for customers in query1 do\r\n where (customers.CompanyName = \u0026quot;The Big Cheese\u0026quot;)\r\n select customers}\r\n |\u0026gt; Seq.toArray\r\n\r\nNotice that the last word in the first line of this query is the computation returned from the previous query.\r\nThis second query produces the following output:\r\nTHEBI|The Big Cheese|Liz Nixon|Marketing Manager|89 Jefferson Way Suite 2|Portland|OR|97201|USA|(503) 555-3612|\r\n\r\nSQLProvider to Objects queries are composable because they operate on and usually return variables of type IQueryable\u0026lt;T\u0026gt;.\r\nIn other words, SQLProvider queries typically follow this pattern:\r\nlet (qry:IQueryable\u0026lt;\u0026#39;T\u0026gt;) =\r\n query {\r\n //for is like C# foreach\r\n for x in (xs:IQueryable\u0026lt;\u0026#39;T\u0026gt;) do\r\n select x\r\n }\r\n\r\n//\r\n\r\nThis is a simple mechanism to understand, but it yields powerful results.\r\nIt allows you to take complex problems, break them into manageable pieces, and solve them with code that is easy to understand and easy to maintain.\r\nGenerate composable queries by using .NET LINQ functions with IQueryable.\r\nThe difference between IEnumerable and IQueryable is basically that IEnumerable is executed in the IL while IQueryable can be translated as en expression tree to some other context (like a database query).\r\nThey are both lazy by nature, meaning they aren\u2019t evaluated until you enumerate over the results.\r\nHere an example:\r\nFirst you have to add .NET LINQ:\r\nopen System.Linq\r\n\r\nThen you can define a composable query outside the main query\r\ntype CustomersEntity = sql.dataContext.\u0060\u0060main.CustomersEntity\u0060\u0060\r\n\r\nlet companyNameFilter inUse =\r\n\r\n let myFilter2 : IQueryable\u0026lt;CustomersEntity\u0026gt; -\u0026gt; IQueryable\u0026lt;CustomersEntity\u0026gt; = fun x -\u0026gt; x.Where(fun i -\u0026gt; i.CustomerId = \u0026quot;ALFKI\u0026quot;)\r\n\r\n let queryable:(IQueryable\u0026lt;CustomersEntity\u0026gt; -\u0026gt; IQueryable\u0026lt;CustomersEntity\u0026gt;) =\r\n match inUse with\r\n |true -\u0026gt;\r\n (fun iq -\u0026gt; iq.Where(fun (c:CustomersEntity) -\u0026gt; c.CompanyName = \u0026quot;The Big Cheese\u0026quot;))\r\n |false -\u0026gt; \r\n myFilter2\r\n queryable\r\n\r\n(Let\u0027s asume that your inUse some complex data:\r\nE.g. Your sub-queries would come from other functions. Basic booleans you can just include to your where-clause)\r\nThen you can create the main query\r\nlet query1 =\r\n query {\r\n for customers in ctx.Main.Customers do\r\n where (customers.ContactTitle = \u0026quot;USA\u0026quot;)\r\n select (customers)}\r\n\r\nand now call you are able to call the second query like this\r\nlet res = companyNameFilter true query1 |\u0026gt; Seq.toArray\r\n\r\nGenerate composable queries by using FSharp.Linq.ComposableQuery\r\nThe SQLProvider also supports composable queries by integrating following library FSharpLinqComposableQuery.\r\nYou can read more about that library here: FSharp.Linq.ComposableQuery\r\nBecause it is implemented in the SQLProvider you dont need to add FSharpComposableQuery in your script.\r\nExample for using FSharpComposableQuery\r\nlet qry1 =\r\n query { for u in dbContext.Users do\r\n select (u.Id, u.Name, u.Email)\r\n }\r\n\r\nlet qry2 =\r\n query { for c in dbContext.Cars do\r\n select (c.UserId, c.Brand, c.Year)\r\n }\r\n\r\nquery { for (i,n,e) in qry1 do\r\n join (u,b,y) in qry2 on (i = u)\r\n where (y \u0026gt; 2015)\r\n select (i,n,e,u,b,y)\r\n } |\u0026gt; Seq.toArray\r\n\r\nNested Select Where Queries\r\nYou can create a query like SELECT * FROM xs WHERE xs.x IN (SELECT y FROM ys))\r\nwith either LINQ Contains or custom operators: in |=| and not-in |\u0026lt;\u0026gt;|\r\nThis is done by not saying |\u0026gt; Seq.toArray to the first query:\r\nopen System.Linq\r\n\r\nlet nestedQueryTest =\r\n let qry1 = query {\r\n for emp in ctx.Hr.Employees do\r\n where (emp.FirstName.StartsWith(\u0026quot;S\u0026quot;))\r\n select (emp.FirstName)\r\n }\r\n query {\r\n for emp in ctx.Hr.Employees do\r\n where (qry1.Contains(emp.FirstName))\r\n select (emp.FirstName, emp.LastName)\r\n } |\u0026gt; Seq.toArray\r\n\r\nUsing non-strongly-typed __.GetColumn \u0022name\u0022\r\nAll the entities inherit from SqlEntity which has GetColumn-method.\r\nSo you can use non-strongly-typed columns like this:\r\nlet qry = \r\n query {\r\n for x in query1 do\r\n where ((x.GetColumn\u0026lt;string\u0026gt; \u0026quot;CustomerId\u0026quot;) = \u0026quot;ALFKI\u0026quot;)\r\n select (x.GetColumn\u0026lt;string\u0026gt; \u0026quot;CustomerId\u0026quot;)\r\n } |\u0026gt; Seq.head\r\n\r\nHowever this is not recommended as one of the SQLProvider\u0027s key benefits is strong typing.\r\nGenerate composable queries from quotations\r\nYou can also construct composable queries using the F# quotation mechanism. For\r\nexample, if you need to select a filter function at runtime, you could write the\r\nfilters as quotations, and then include them into query like that:\r\nlet johnFilter = \u0026lt;@ fun (employee : sql.dataContext.\u0060\u0060main.EmployeesEntity\u0060\u0060) -\u0026gt; employee.FirstName = \u0026quot;John\u0026quot; @\u0026gt;\r\nlet pamFilter = \u0026lt;@ fun (employee : sql.dataContext.\u0060\u0060main.EmployeesEntity\u0060\u0060) -\u0026gt; employee.FirstName = \u0026quot;Pam\u0026quot; @\u0026gt;\r\n\r\nlet runtimeSelectedFilter = if 1 = 1 then johnFilter else pamFilter\r\nlet employees =\r\n query {\r\n for emp in ctx.Main.Employees do\r\n where ((%runtimeSelectedFilter) emp) \r\n select emp\r\n } |\u0026gt; Seq.toArray\r\n\r\nQuotations are AST representations which the Linq-to-SQL translator can use.\r\n","headings":["Composable Queries","Definition of Composable Queries","Generate composable queries by using Linq IQueryable","Generate composable queries by using .NET LINQ functions with IQueryable.","Generate composable queries by using FSharp.Linq.ComposableQuery","Nested Select Where Queries","Using non-strongly-typed __.GetColumn \u0022name\u0022","Generate composable queries from quotations"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/constraints-relationships.html","title":"Constraints \u0026amp; Relationships\r\n","content":"Constraints \u0026amp; Relationships\r\nA typical relational database will have many connected tables and views\r\nthrough foreign key constraints. The SQL provider is able to show you these\r\nconstraints on entities. They appear as properties named the same as the\r\nconstraint in the database.\r\nYou can gain access to these child or parent entities by simply enumerating\r\nthe property in question.\r\nWhile SQL provider automatically generates getters from foreign key relations, it doesn\u0027t have (yet) any automatic support for creating a properly ordered graph of related entities in a single transaction. However, SQL provider submits entities to a database in the same order they were created, which means that as long as you create entities in their dependency order, you won\u0027t get foreign key constraint violations.\r\n","headings":["Constraints \u0026amp; Relationships"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/contributing.html","title":"How to make a contribution\r\n","content":"How to make a contribution\r\nThis is how you can make a \u0022pull request\u0022, to suggest your modifications to be accepted to the code base.\r\n1. Download or clone the repository to your computer.\r\n(Or take git pull if you already have the repository.)\r\n\r\nYou need to get the .git folder inside the repository.\r\nIf the download doesn\u0027t work you can use clone, which creates a separate folder and downloads the repository:\r\n git clone https://github.com/fsprojects/SQLProvider.git\r\n\r\n2. Edit and Commit\r\nHere are some tech details.\r\nDo the modifications, check the build and tests are working. Commit the modifications to your local repository.\r\n3. Fork the GitHub repository.\r\nThis will \u0022copy\u0022 the repository for your account.\r\n\r\n4. Get Your Url\r\nIn GitHub, go to your copy of the repository (under your profile, Repositories-tab) and under Download, get the repository url, e.g. https://github.com/myname/SqlProvider.git\r\n5. Add a Remote\r\nWith command line, add a remote to your repository url:\r\n git remote add myrepo https://github.com/myname/SqlProvider.git\r\n\r\nUse the name you want for repository and note your GitHub account in the url. You can check the remotes with git remote -v.\r\n6. Push to Your Remote\r\nPush the latest version to your repository with\r\ngit push myrepo. You should see the modifications in GitHub under your repository.\r\n7. Create a Pull Request\r\nIn GitHub under your repository press the Create pull request -button. By default, everything should be correct: Base-fork is the one where you want to send the modifications and head fork is your fork, so follow the wizard.\r\n\r\n8. Done.\r\nYour pull request should be visible under \u0022Pull requests\u0022 -tab in original repository. When you do more commits, you can ignore parts 3, 4 and 5, they has to be done just once.\r\n\r\n","headings":["How to make a contribution","1. Download or clone the repository to your computer.","2. Edit and Commit","3. Fork the GitHub repository.","4. Get Your Url","5. Add a Remote","6. Push to Your Remote","7. Create a Pull Request","8. Done."],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/crud.html","title":"CRUD sample\r\n","content":"CRUD sample\r\nopen System\r\n\r\n\r\nlet ctx = sql.GetDataContext()\r\n\r\nlet orders = ctx.Main.Orders\r\nlet employees = ctx.Main.Employees\r\n\r\nlet customer = ctx.Main.Customers |\u0026gt; Seq.head \r\nlet employee = ctx.Main.Employees |\u0026gt; Seq.head\r\nlet now = DateTime.Now\r\n\r\nCreate() has various overloads to make inserting records simple.\r\nCreate a new row\r\nlet row = orders.Create()\r\nrow.CustomerId \u0026lt;- customer.CustomerId\r\nrow.EmployeeId \u0026lt;- employee.EmployeeId\r\nrow.Freight \u0026lt;- 10M\r\nrow.OrderDate \u0026lt;- now.AddDays(-1.0)\r\nrow.RequiredDate \u0026lt;- now.AddDays(1.0)\r\nrow.ShipAddress \u0026lt;- \u0026quot;10 Downing St\u0026quot;\r\nrow.ShipCity \u0026lt;- \u0026quot;London\u0026quot;\r\nrow.ShipName \u0026lt;- \u0026quot;Dragons den\u0026quot;\r\nrow.ShipPostalCode \u0026lt;- \u0026quot;SW1A 2AA\u0026quot;\r\nrow.ShipRegion \u0026lt;- \u0026quot;UK\u0026quot;\r\nrow.ShippedDate \u0026lt;- now\r\n\r\nSubmit updates to the database\r\nctx.SubmitUpdates()\r\n\r\nAfter updating your item (row) will have the Id property.\r\nYou can also create with the longer \u0060\u0060Create(...)\u0060\u0060(parameters)-method like this:\r\nlet emp = ctx.Main.Employees.\u0060\u0060Create(FirstName, LastName)\u0060\u0060(\u0026quot;Don\u0026quot;, \u0026quot;Syme\u0026quot;)\r\n\r\nDelete the row\r\nrow.Delete()\r\n\r\nSubmit updates to the database\r\nctx.SubmitUpdates()\r\n\r\nInsert a list of records:\r\ntype Employee = {\r\n FirstName:string\r\n LastName:string\r\n}\r\n\r\nlet mvps1 = [\r\n {FirstName=\u0026quot;Andrew\u0026quot;; LastName=\u0026quot;Kennedy\u0026quot;};\r\n {FirstName=\u0026quot;Mads\u0026quot;; LastName=\u0026quot;Torgersen\u0026quot;};\r\n {FirstName=\u0026quot;Martin\u0026quot;;LastName=\u0026quot;Odersky\u0026quot;};\r\n]\r\n\r\nmvps1 \r\n |\u0026gt; List.map (fun x -\u0026gt;\r\n let row = employees.Create()\r\n row.FirstName \u0026lt;- x.FirstName\r\n row.LastName \u0026lt;- x.LastName)\r\n\r\nctx.SubmitUpdates()\r\n\r\nOr directly specify the fields:\r\nlet mvps2 = [\r\n {FirstName=\u0026quot;Byron\u0026quot;; LastName=\u0026quot;Cook\u0026quot;};\r\n {FirstName=\u0026quot;James\u0026quot;; LastName=\u0026quot;Huddleston\u0026quot;};\r\n {FirstName=\u0026quot;Xavier\u0026quot;;LastName=\u0026quot;Leroy\u0026quot;};\r\n]\r\n\r\nmvps2\r\n |\u0026gt; List.map (fun x -\u0026gt; \r\n employees.Create(x.FirstName, x.LastName) \r\n )\r\n\r\nctx.SubmitUpdates()\r\n\r\nupdate a single row\r\nassuming Id is unique\r\ntype Employee2 = {\r\n Id:int\r\n FirstName:string\r\n LastName:string\r\n}\r\n\r\nlet updateEmployee (employee: Employee2) =\r\n let foundEmployeeMaybe = query {\r\n for p in ctx.Public.Employee2 do\r\n where (p.Id = employee.Id)\r\n select (Some p)\r\n exactlyOneOrDefault\r\n }\r\n match foundEmployeeMaybe with\r\n | Some foundEmployee -\u0026gt;\r\n foundEmployee.FirstName \u0026lt;- employee.FirstName\r\n foundEmployee.LastName \u0026lt;- employee.LastName\r\n ctx.SubmitUpdates()\r\n | None -\u0026gt; ()\r\n\r\nlet updateEmployee\u0026#39; (employee: Employee2) =\r\n query {\r\n for p in ctx.Public.Employee2 do\r\n where (p.Id = employee.Id)\r\n }\r\n |\u0026gt; Seq.iter( fun e -\u0026gt;\r\n e.FirstName \u0026lt;- employee.FirstName\r\n e.LastName \u0026lt;- employee.LastName\r\n )\r\n ctx.SubmitUpdates()\r\n\r\nlet john = {\r\n Id = 1\r\n FirstName = \u0026quot;John\u0026quot;\r\n LastName = \u0026quot;Doe\u0026quot; }\r\n\r\nupdateEmployee john\r\nupdateEmployee\u0026#39; john\r\n\r\nFinally it is also possible to specify a seq of string * obj which is exactly the\r\noutput of .ColumnValues:\r\nemployees \r\n |\u0026gt; Seq.map (fun x -\u0026gt;\r\n employee.Create(x.ColumnValues)) // create twins\r\n |\u0026gt; Seq.toList\r\n\r\nlet twins = ctx.GetUpdates() // Retrieve the FSharp.Data.Sql.Common.SqlEntity objects\r\n\r\nctx.ClearUpdates() // delete the updates\r\nctx.GetUpdates() // Get the updates\r\nctx.SubmitUpdates() // no record is added\r\n\r\nInside SubmitUpdate the transaction is created by default TransactionOption, which is Required: Shares a transaction, if one exists, and creates a new transaction if necessary. So e.g. if you have query-operation before SubmitUpdates, you may want to create your own transaction to wrap these to the same transaction.\r\nSQLProvider also supports async database operations:\r\nctx.SubmitUpdatesAsync() // |\u0026gt; Async.AwaitTask\r\n \r\n\r\nOnConflict\r\nThe SQLite, PostgreSQL 9.5\u002B and MySQL 8.0\u002B providers support conflict resolution for INSERT statements.\r\nThey allow the user to specify if a unique constraint violation should be solved by ignoring the statement (DO NOTHING) or updating existing rows (DO UPDATE).\r\nYou can leverage this feature by setting the OnConflict property on a row object:\r\n* Setting it to DoNothing will add the DO NOTHING clause (PostgreSQL) or the OR IGNORE clause (SQLite).\r\n* Setting it to Update will add a DO UPDATE clause on the primary key constraint for all columns (PostgreSQL) or a OR REPLACE clause (SQLite).\r\nSql Server has a similar feature in the form of the MERGE statement. This is not yet supported.\r\nlet ctx = sql.GetDataContext()\r\n\r\nlet emp = ctx.Main.Employees.Create()\r\nemp.Id \u0026lt;- 1\r\nemp.FirstName \u0026lt;- \u0026quot;Jane\u0026quot;\r\nemp.LastName \u0026lt;- \u0026quot;Doe\u0026quot;\r\n\r\nemp.OnConflict \u0026lt;- FSharp.Data.Sql.Common.OnConflict.Update\r\n\r\nctx.SubmitUpdates()\r\n\r\nDelete-query for multiple items\r\nIf you want to delete many items from a database table, DELETE FROM [dbo].[EMPLOYEES] WHERE (...), there is a way, although we don\u0027t recommend deleting items from a database. Instead you should consider a deletion-flag column. And you should backup your database before even trying this. Note that changes are immediately saved to the database even if you don\u0027t call ctx.SubmitUpdates().\r\nquery {\r\n for c in ctx.Dbo.Employees do\r\n where (...)\r\n} |\u0026gt; Seq.\u0060\u0060delete all items from single table\u0060\u0060 |\u0026gt; Async.RunSynchronously\r\n\r\nSelecting which Create() to use\r\nThere are 3 overrides of create.\r\nThe ideal one to use is the long one \u0060\u0060Create(...)\u0060\u0060(...):\r\nlet emp = ctx.Main.Employees.\u0060\u0060Create(FirstName, LastName)\u0060\u0060(\u0026quot;Don\u0026quot;, \u0026quot;Syme\u0026quot;)\r\n\r\nThis is because it will fail if your database structure changes.\r\nSo, when your table gets new columns, the code will fail at compile time.\r\nThen you decide what to do with the new columns, and not let a bug to customers.\r\nBut you may want to use the plain .Create() if your setup is not optimal.\r\nTry to avoid these conditions:\r\n\r\nIf your editor intellisense is not working for backtick-variables.\r\nYou have lot of nullable columns in your database.\r\nYou want to use F# like a dynamic language.\r\n\r\nIn the last case you\u0027ll be maintaining code like this:\r\nlet employeeId = 123\r\n// Got some untyped array of data from the client\r\nlet createSomeItem (data: seq\u0026lt;string*obj\u0026gt;) = \r\n data\r\n |\u0026gt; Seq.map( // Some parsing and validation:\r\n function \r\n // Skip some fields\r\n | \u0026quot;EmployeeId\u0026quot;, x\r\n | \u0026quot;PermissionLevel\u0026quot;, x -\u0026gt; \u0026quot;\u0026quot;, x\r\n // Convert and validate some fields\r\n | \u0026quot;PostalCode\u0026quot;, x -\u0026gt; \r\n \u0026quot;PostalCode\u0026quot;, x.ToString().ToUpper().Replace(\u0026quot; \u0026quot;, \u0026quot;\u0026quot;) |\u0026gt; box\r\n | \u0026quot;BirthDate\u0026quot;, x -\u0026gt; \r\n let bdate = x.ToString() |\u0026gt; DateTime.Parse\r\n if bdate.AddYears(18) \u0026gt; DateTime.UtcNow then\r\n failwith \u0026quot;Too young!\u0026quot;\r\n else\r\n \u0026quot;BirthDate\u0026quot;, bdate.ToString(\u0026quot;yyyy-MM-dd\u0026quot;) |\u0026gt; box\r\n | others -\u0026gt; others)\r\n |\u0026gt; Seq.filter (fun (key,_) -\u0026gt; key \u0026lt;\u0026gt; \u0026quot;\u0026quot;)\r\n // Add some fields:\r\n |\u0026gt; Seq.append [|\u0026quot;EmployeeId\u0026quot;, employeeId |\u0026gt; box; \r\n \u0026quot;Country\u0026quot;, \u0026quot;UK\u0026quot; |\u0026gt; box |]\r\n |\u0026gt; ctx.Main.Employees.Create\r\n\r\nWhat to do if your creation fails systematically every time\r\nSome underlying database connection libraries have problems with serializing underlying data types.\r\nSo, if this fails:\r\nemp.BirthDate \u0026lt;- DateTime.UtcNow\r\nctx.SubmitUpdates()\r\n\r\nTry using .SetColumn(\u0022ColumnName\u0022, value |\u0026gt; box)\r\nfor example:\r\nemp.SetColumn(\u0026quot;BirthDate\u0026quot;, DateTime.UtcNow.ToString(\u0026quot;yyyy-MM-dd HH\\:mm\\:ss\u0026quot;) |\u0026gt; box)\r\nctx.SubmitUpdates()\r\n\r\nSetColumn takes object, so you have more control over the type serialization.\r\n","headings":["CRUD sample","OnConflict","Delete-query for multiple items","Selecting which Create() to use","What to do if your creation fails systematically every time"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/general.html","title":"general","content":"To use the type provider you must first create a type alias.\r\nIn this declaration you are able to pass various pieces of information known\r\nas static parameters to initialize properties such as the connection string\r\nand database vendor type that you are connecting to.\r\nIn the following examples a SQLite database will be used. You can read in\r\nmore detail about the available static parameters in other areas of the\r\ndocumentation.\r\ntype sql = SqlDataProvider\u0026lt;\r\n Common.DatabaseProviderTypes.SQLITE,\r\n connectionString,\r\n SQLiteLibrary=Common.SQLiteLibrary.SystemDataSQLite,\r\n ResolutionPath = resolutionPath,\r\n CaseSensitivityChange = Common.CaseSensitivityChange.ORIGINAL\r\n \u0026gt;\r\n\r\nNow we have a type sql that represents the SQLite database provided in\r\nthe connectionString parameter. In order to start exploring the database\u0027s\r\nschema and reading its data, you create a DataContext value.\r\nlet ctx = sql.GetDataContext()\r\n\r\nIf you want to use non-literal connectionString at runtime (e.g. crypted production\r\npasswords), you can pass your runtime connectionString parameter to GetDataContext:\r\nlet connectionString2 = \u0026quot;(insert runtime connection here)\u0026quot;\r\nlet ctx2 = sql.GetDataContext connectionString2\r\n\r\nWhen you press . on ctx, intellisense will display a list of properties\r\nrepresenting the available tables and views within the database.\r\nIn the simplest case, you can treat these properties as sequences that can\r\nbe enumerated.\r\nlet customers = ctx.Main.Customers |\u0026gt; Seq.toArray\r\n\r\nThis is the equivalent of executing a query that selects all rows and\r\ncolumns from the [main].[customers] table.\r\nNotice the resulting type is an array of [Main].[Customers]Entity. These\r\nentities will contain properties relating to each column name from the table.\r\nlet firstCustomer = customers.[0]\r\nlet name = firstCustomer.ContactName\r\n\r\nEach property is correctly typed depending on the database column\r\ndefinitions. In this example, firstCustomer.ContactName is a string.\r\nMost of the databases support some kind of comments/descriptions/remarks to\r\ntables and columns for documentation purposes. These descriptions are fetched\r\nto tooltips for the tables and columns.\r\nConstraints and Relationships\r\nA typical relational database will have many connected tables and views\r\nthrough foreign key constraints. The SQL provider is able to show you these\r\nconstraints on entities. They appear as properties named the same as the\r\nconstraint in the database.\r\nYou can gain access to these child or parent entities by simply enumerating\r\nthe property in question.\r\nlet orders = firstCustomer.\u0060\u0060main.Orders by CustomerID\u0060\u0060 |\u0026gt; Seq.toArray\r\n\r\norders now contains all the orders belonging to firstCustomer. You will\r\nsee the orders type is an array of [Main].[Orders]Entity indicating the\r\nresulting entities are from the [main].[Orders] table in the database.\r\nIf you hover over FK_Orders_0_0 intellisense will display information\r\nabout the constraint in question including the names of the tables involved\r\nand the key names.\r\nBehind the scenes the SQL provider has automatically constructed and executed\r\na relevant query using the entity\u0027s primary key.\r\nBasic Querying\r\nThe SQL provider supports LINQ queries using F#\u0027s query expression syntax.\r\nlet customersQuery = \r\n query { \r\n for customer in ctx.Main.Customers do\r\n select customer\r\n }\r\n |\u0026gt; Seq.toArray\r\n\r\nSupport also async queries\r\nlet customersQueryAsync = \r\n query { \r\n for customer in ctx.Main.Customers do\r\n select customer\r\n }\r\n |\u0026gt; Seq.executeQueryAsync \r\n\r\nThe above example is identical to the query that was executed when\r\nctx.[main].[Customers] |\u0026gt; Seq.toArray was evaluated.\r\nYou can extend this basic query include to filter criteria by introducing\r\none or more where clauses\r\nlet filteredQuery = \r\n query { \r\n for customer in ctx.Main.Customers do\r\n where (customer.ContactName = \u0026quot;John Smith\u0026quot;)\r\n select customer\r\n }\r\n |\u0026gt; Seq.toArray\r\n\r\nlet multipleFilteredQuery = \r\n query { \r\n for customer in ctx.Main.Customers do\r\n where ((customer.ContactName = \u0026quot;John Smith\u0026quot; \u0026amp;\u0026amp; customer.Country = \u0026quot;England\u0026quot;) || customer.ContactName = \u0026quot;Joe Bloggs\u0026quot;)\r\n select customer\r\n }\r\n |\u0026gt; Seq.toArray\r\n\r\nThe SQL provider will accept any level of nested complex conditional logic\r\nin the where clause.\r\nTo access related data, you can either enumerate directly over the constraint\r\nproperty of an entity, or you can perform an explicit join.\r\nlet automaticJoinQuery = \r\n query { \r\n for customer in ctx.Main.Customers do\r\n for order in customer.\u0060\u0060main.Orders by CustomerID\u0060\u0060 do\r\n where (customer.ContactName = \u0026quot;John Smith\u0026quot;)\r\n select (customer, order)\r\n }\r\n |\u0026gt; Seq.toArray\r\n\r\nlet explicitJoinQuery = \r\n query { \r\n for customer in ctx.Main.Customers do\r\n join order in ctx.Main.Orders on (customer.CustomerId = order.CustomerId)\r\n where (customer.ContactName = \u0026quot;John Smith\u0026quot;)\r\n select (customer, order)\r\n }\r\n |\u0026gt; Seq.toArray\r\n\r\nBoth of these queries have identical results, the only difference is that one\r\nrequires explicit knowledge of which tables join where and how, and the other doesn\u0027t.\r\nYou might have noticed the select expression has now changed to (customer, order).\r\nAs you may expect, this will return an array of tuples where the first item\r\nis a [Main].[Customers]Entity and the second a [Main].[Orders]Entity.\r\nOften you will not be interested in selecting entire entities from the database.\r\nChanging the select expression to use the entities\u0027 properties will cause the\r\nSQL provider to select only the columns you have asked for, which is an\r\nimportant optimization.\r\nlet ordersQuery = \r\n query { \r\n for customer in ctx.Main.Customers do\r\n for order in customer.\u0060\u0060main.Orders by CustomerID\u0060\u0060 do\r\n where (customer.ContactName = \u0026quot;John Smith\u0026quot;)\r\n select (customer.ContactName, order.OrderDate, order.ShipAddress)\r\n }\r\n |\u0026gt; Seq.toArray\r\n\r\nThe results of this query will return the name, order date and ship address\r\nonly. By doing this you no longer have access to entity types.\r\nThe SQL provider supports various other query keywords and features that you\r\ncan read about elsewhere in this documentation.\r\nIndividuals\r\nThe SQL provider has the ability via intellisense to navigate the actual data\r\nheld within a table or view. You can then bind that data as an entity to a value.\r\nlet BERGS = ctx.Main.Customers.Individuals.BERGS\r\n\r\nEvery table and view has an Individuals property. When you press dot on\r\nthis property, intellisense will display a list of the data in that table,\r\nusing whatever the primary key is as the text for each one.\r\nIn this case, the primary key for [main].[Customers] is a string, and I\r\nhave selected one named BERGS. You will see the resulting type is\r\n[main].[Customers]Entity.\r\nThe primary key is not usually very useful for identifying data however, so\r\nin addition to this you will see a series of properties named \u0022As X\u0022 where X\r\nis the name of a column in the table.\r\nWhen you press . on one of these properties, the data is re-projected to you\r\nusing both the primary key and the text of the column you have selected.\r\nlet christina = ctx.Main.Customers.Individuals.\u0060\u0060As ContactName\u0060\u0060.\u0060\u0060BERGS, Christina Berglund\u0060\u0060\r\n\r\nDataContext\r\nYou should create and use one data context as long as it has the parameters you need.\r\nAn example of when to use multiple data contexts is when you need to pass different\r\nconnection strings to connect to different instances of the same database,\r\ne.g. to copy data between them.\r\nThe connection itself is not stored and reused with an instance of the data context.\r\nThe data context creates a connection when you execute a query or when you call\r\nSubmitUpdates(). In terms of transactions, the data context object tracks (full)\r\nentities that were retrieved using it via queries or Individuals and manages their\r\nstates. Upon calling SubmitUpdates(), all entities modified/created that belong to\r\nthat data context are wrapped in a single transaction scope, and then a connection\r\nis created and thus enlisted into the transaction.\r\n*#Important*:\r\nThe database schema (SQLProvider\u0027s understanding of the structure of tables, columns, names, types, etc of your database\r\n- a \u0022snapshot\u0022 if you will) is cached lazily while you use it.\r\nWhat does that entail?\r\nA. Once SQLProvider gets a \u0022mental model\u0022 of your database (the schema),\r\nthat is what is used for any intellisense/completion suggestions for the rest of your IDE session.\r\nThis is a fantastic feature, because it means that you\u0026#39;re not assaulting your database with a \r\nnew \u0026quot;What are you like?\u0026quot; query on EVERY SINGLE KEYSTROKE. \r\n\r\nBut what if the database changes? SQLProvider will NOT see your change because it\u0026#39;s source of truth is\r\nthat locally cached schema snapshot it took right when it started, and that snapshot will persist until\r\none of 2 things happens: \r\n\r\n1. A restart of your Editor/IDE. \r\n The database is queried right when SQLProvider starts up, so you \r\n could certainly force a refresh by restarting. \r\n \r\n2. Forced clearing of the local database schema cache.\r\n If SQLProvider is currently able to communicate with the database,\r\n you can force the local cache to clear, to be invalidated and refreshed by\r\n by using what are called \u0060Design Time Commands\u0060, specifically the \r\n \u0060ClearDatabaseSchemaCache\u0060 method. \r\n \r\n You\u0026#39;re probably thinking: \u0026quot;Ok, fine, that sounds good! How do I do that though?\u0026quot;\r\n \r\n Just as SQLProvider can interact at compile time with the structure of data in your \r\n database through your editor\u0026#39;s completion tooling \r\n (intellisense, language server protocol completion suggestions, etc),\r\n you can also interact with SQLProvider at compile time the exact same way. \r\n \r\n SQLProvider provides methods under the DataContext you get from your type alias, \r\n and they actually show up as \u0060\u0060Design Time Commands\u0060\u0060 in the completion. \r\n \r\n Select that, and then \u0026quot;dot into\u0026quot; it afterwards, then under that is ClearDatabaseSchemaCache.\r\n Then after that typing in a \u0026quot;.\u0026quot; will actualy RUN the command, thereby clearing the cache. \r\n\r\nB. LAZY evaluation means that where you save the database schema in your code matters.\r\nDo not call the \u0022Design Time Command\u0022 SaveContextSchema at the top of your code. FSharp is evaluated\r\ntop to bottom, and so if you call SaveContextSchema at the top, before you ask for specific columns in your code,\r\nyou will not get a schema that reflects your needs.\r\nsql.GetDataContext(cs).\u0060\u0060Design Time Commands\u0060\u0060.SaveContextSchema // put a \u0026quot;.\u0026quot; at the end to call the command at compile time.\r\n\r\nHow fast is SQLProvider?\r\nYou may wonder does all this magic come with a huge performance cost. However, when working with databases,\r\nyour network connection to SQL-database is typically the bottle neck, not your processor speed.\r\nThat\u0027s why SQLProvider does short-circuit and optimise your queries as much as possible.\r\nThere is a performance-test project in this repo. This is a sample run:\r\n\r\nBenchmarkDotNet v0.13.12\r\n.NET 8\r\nLaptop, Intel i9 13th Gen on Windows 11\r\nMicrosoft SQL Sever on local computer\r\n\r\n\r\n\r\n\r\nMethod\r\nrowsReturned\r\nMean\r\nError\r\nStdDev\r\nMedian\r\nRatio\r\nRatioSD\r\nGen0\r\nGen1\r\nGen2\r\n\r\n\r\n\r\n\r\nFirstNamesToList\r\n25\r\n1.110 ms\r\n0.0222 ms\r\n0.0618 ms\r\n1.096 ms\r\n1.00\r\n0.00\r\n27.3438\r\n11.7188\r\n0\r\n\r\n\r\nFirstNamesToListAsync\r\n25\r\n1.257 ms\r\n0.0460 ms\r\n0.1326 ms\r\n1.300 ms\r\n1.14\r\n0.13\r\n29.2969\r\n13.6719\r\n0\r\n\r\n\r\nFirstNamesToList\r\n2500\r\n2.845 ms\r\n0.0561 ms\r\n0.0709 ms\r\n2.829 ms\r\n1.00\r\n0.00\r\n234.3750\r\n179.6875\r\n0\r\n\r\n\r\nFirstNamesToListAsync\r\n2500\r\n3.030 ms\r\n0.0820 ms\r\n0.2325 ms\r\n2.946 ms\r\n1.07\r\n0.09\r\n234.3750\r\n171.8750\r\n0\r\n\r\n\r\n\r\n\r\n","headings":["Constraints and Relationships","Basic Querying","Individuals","DataContext","How fast is SQLProvider?"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/individuals.html","title":"Individuals\r\n","content":"Individuals\r\nFind individual rows in tables with code completion in the editor.\r\nopen System\r\nopen FSharp.Data.Sql\r\n\r\ntype sql = SqlDataProvider\u0026lt;\r\n Common.DatabaseProviderTypes.SQLITE,\r\n connectionString,\r\n SQLiteLibrary=Common.SQLiteLibrary.SystemDataSQLite,\r\n ResolutionPath = resolutionPath,\r\n CaseSensitivityChange = Common.CaseSensitivityChange.ORIGINAL\r\n \u0026gt;\r\n\r\nlet ctx = sql.GetDataContext()\r\n\r\nlet customers = ctx.Main.Customers\r\n\r\nGet individual customer row by primary key value\r\ncustomers.Individuals.COMMI\r\n\r\nGet individual customer row using address\r\ncustomers.Individuals.\u0060\u0060As ContactName\u0060\u0060.\u0060\u0060COMMI, Pedro Afonso\u0060\u0060\r\n\r\nGet individual customer row using address\r\ncustomers.Individuals.\u0060\u0060As Address\u0060\u0060.\u0060\u0060CONSH, Berkeley Gardens 12 Brewery\u0060\u0060\r\n\r\n","headings":["Individuals"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/mappers.html","title":"mappers","content":"Adding a Mapper using dataContext to use generated types from db\r\nThis mapper will get sure that you always sync your types with types you receive from your db.\r\nFirst add an Domain Model\r\nopen System\r\n\r\ntype Employee = {\r\n EmployeeId : int64\r\n FirstName : string\r\n LastName : string\r\n HireDate : DateTime\r\n}\r\n\r\nThen you can create the mapper using dataContext to use generated types from db\r\nlet mapEmployee (dbRecord:sql.dataContext.\u0060\u0060main.EmployeesEntity\u0060\u0060) : Employee =\r\n { EmployeeId = dbRecord.EmployeeId\r\n FirstName = dbRecord.FirstName\r\n LastName = dbRecord.LastName\r\n HireDate = dbRecord.HireDate }\r\n\r\nSqlProvider also has a .MapTo\u0026lt;\u0027T\u0026gt; convenience method:\r\nlet ctx = sql.GetDataContext()\r\n\r\nlet orders = ctx.Main.Orders\r\nlet employees = ctx.Main.Employees\r\n\r\ntype Employee2 = {\r\n FirstName:string\r\n LastName:string\r\n }\r\n\r\nlet qry = query { for row in employees do\r\n select row} |\u0026gt; Seq.map (fun x -\u0026gt; x.MapTo\u0026lt;Employee2\u0026gt;())\r\n\r\nThe target type can be a record (as in the example) or a class type with properties named as the source columns and with a paremeterless setter.\r\nThe target field name can also be different than the column name; in this case it must be decorated with the MappedColumnAttribute custom attribute:\r\nopen FSharp.Data.Sql.Common\r\n\r\ntype Employee3 = {\r\n [\u0026lt;MappedColumn(\u0026quot;FirstName\u0026quot;)\u0026gt;] GivenName:string\r\n [\u0026lt;MappedColumn(\u0026quot;LastName\u0026quot;)\u0026gt;] FamilyName:string\r\n }\r\n\r\nlet qry2 = \r\n query { \r\n for row in employees do\r\n select row} |\u0026gt; Seq.map (fun x -\u0026gt; x.MapTo\u0026lt;Employee3\u0026gt;())\r\n\r\nOr alternatively the ColumnValues from SQLEntity can be used to create a map, with the\r\ncolumn as a key:\r\nlet rows = \r\n query { \r\n for row in employees do\r\n select row} |\u0026gt; Seq.toArray\r\n\r\nlet employees2map = rows |\u0026gt; Seq.map(fun i -\u0026gt; i.ColumnValues |\u0026gt; Map.ofSeq)\r\nlet firstNames = employees2map |\u0026gt; Seq.map (fun x -\u0026gt; x.[\u0026quot;FirstName\u0026quot;])\r\n\r\n","headings":["Adding a Mapper using dataContext to use generated types from db"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/msaccess.html","title":"SQL Provider for MSAccess\r\n","content":"SQL Provider for MSAccess\r\nMSAccess is based on System.Data.OleDb. For databases \u0026gt; Access 2007 (with\r\n.accdb extension), use ACE drivers. For dbs \u0026lt; 2007 (with .mdb extension),\r\nJET drivers can be used, although ACE will also work.\r\nhttp://www.microsoft.com/download/en/confirmation.aspx?id=23734\r\nParameters\r\nConnectionString\r\nBasic connection string used to connect to PostgreSQL instance; typical\r\nconnection strings for the driver apply here. See\r\n(MSAccess Connection Strings Documentation) []\r\nfor a complete list of connection string options.\r\n//TODO: link to reference\r\n\r\n[\u0026lt;Literal\u0026gt;]\r\nlet connectionString1 = \u0026quot;Provider=Microsoft.ACE.OLEDB.12.0; Data Source= \u0026quot; \u002B __SOURCE_DIRECTORY__ \u002B @\u0026quot;..\\..\\..\\files\\msaccess\\Northwind.accdb\u0026quot;\r\n\r\n[\u0026lt;Literal\u0026gt;]\r\nlet connectionString2 = \r\n \u0026quot;Provider=Microsoft.Jet.OLEDB.4.0; Data Source= \u0026quot; \u002B\r\n __SOURCE_DIRECTORY__ \u002B \r\n @\u0026quot;..\\..\\..\\files\\msaccess\\Northwind.mdb\u0026quot;\r\n\r\nConnectionStringName\r\nInstead of storing the connection string in the source code / fsx script, you\r\ncan store values in the App.config file. This is the name of the\r\nconnectionString key/value pair stored in App.config (TODO: confirm file name).\r\n// found in App.config (TODO:confirm)\r\nlet connexStringName = \u0026quot;DefaultConnectionString\u0026quot;\r\n\r\nDatabaseVendor\r\nFrom the FSharp.Data.Sql.Common.DatabaseProviderTypes enumeration. For MSAccess,\r\nuse Common.DatabaseProviderTypes.MSACCESS.\r\nlet dbVendor = FSharp.Data.Sql.Common.DatabaseProviderTypes.MSACCESS\r\n\r\nResolutionPath\r\nPath to search for assemblies containing database vendor specific connections\r\nand custom types. Type the path where Npgsql.Data.dll is stored.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet resolutionPath = __SOURCE_DIRECTORY__\r\n\r\nIndividualsAmount\r\nSets the count to load for each individual. See (individuals)[individuals.html]\r\nfor further info.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet useOptTypes = true\r\n\r\n\r\n#r \u0026quot;FSharp.Data.SqlProvider.dll\u0026quot;\r\nopen FSharp.Data.Sql\r\n\r\n//type accdb = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.MSACCESS , connectionString1, ResolutionPath=resolutionPath \u0026gt;\r\n//let accdbctx = accdb.GetDataContext()\r\n//\r\n//let accdbcustomers = accdbctx.Northwind.Customers|\u0026gt; Seq.toArray\r\n\r\ntype mdb = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.MSACCESS, connectionString2, ResolutionPath=resolutionPath, UseOptionTypes=useOptTypes \u0026gt;\r\nlet mdbctx = mdb.GetDataContext()\r\n\r\nlet mdbcustomers = \r\n mdbctx.Northwind.Customers \r\n |\u0026gt; Seq.map(fun c -\u0026gt; \r\n c.ColumnValues |\u0026gt; Seq.toList) \r\n |\u0026gt; Seq.toList\r\n\r\n","headings":["SQL Provider for MSAccess","Parameters","ConnectionString","ConnectionStringName","DatabaseVendor","ResolutionPath","IndividualsAmount"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/mssql.html","title":"MSSQL Provider\r\n","content":"MSSQL Provider\r\nParameters\r\nDatabaseVendor\r\nFrom the FSharp.Data.Sql.Common.DatabaseProviderTypes enumeration. For MSSQL,\r\nuse Common.DatabaseProviderTypes.MSSQLSERVER.\r\nlet [\u0026lt;Literal\u0026gt;] dbVendor = Common.DatabaseProviderTypes.MSSQLSERVER\r\n\r\nConnectionString\r\nBasic connection string used to connect to MSSQL instance; typical\r\nconnection strings for the driver apply here. See\r\nMSSQL Connecting Strings Documentation\r\nfor a complete list of connection string options.\r\nlet [\u0026lt;Literal\u0026gt;] connString = \u0026quot;Server=localhost;Database=test;User Id=test;Password=test\u0026quot;\r\n\r\nConnectionStringName\r\nInstead of storing the connection string in the source code / fsx script, you\r\ncan store values in the App.config file. This is the name of the\r\nconnectionString key/value pair stored in App.config.\r\n// found in App.config\r\nlet [\u0026lt;Literal\u0026gt;] connexStringName = \u0026quot;DefaultConnectionString\u0026quot;\r\n\r\nIndividualsAmount\r\nSets the count to load for each individual. See individuals\r\nfor further info.\r\nlet [\u0026lt;Literal\u0026gt;] indivAmount = 1000\r\n\r\nUseOptionTypes\r\nIf true, F# option types will be used in place of nullable database columns.\r\nIf false, you will receive the default value of the column\u0027s type\r\nif the value is null in the database. The default is FSharp.Data.Sql.Common.NullableColumnType.NO_OPTION.\r\nlet [\u0026lt;Literal\u0026gt;] useOptTypes = FSharp.Data.Sql.Common.NullableColumnType.OPTION\r\n\r\ntype sql =\r\n SqlDataProvider\u0026lt;\r\n dbVendor,\r\n connString,\r\n IndividualsAmount = indivAmount,\r\n UseOptionTypes = useOptTypes\u0026gt;\r\n\r\nBecause MSSQL databases can be huge, there is an optional constructor parameter TableNames that can be used as a filter.\r\nUsing Microsoft.Data.SqlClient.dll instead of build-in System.Data.SqlClient.dll\r\nTo use another driver, Microsoft.Data.SqlClient.dll, you have to set your provider to Common.DatabaseProviderTypes.MSSQLSERVER_DYNAMIC and copy the reference files\r\nfrom the NuGet package to local resolutionPath (e.g. Microsoft.Data.SqlClient.dll, Microsoft.Data.SqlClient.SNI.dll and Microsoft.Data.SqlClient.SNI.x86.dll).\r\nUsing SQLProvider with SSDT\r\nYou can user SQLProvider with SSDT.\r\n","headings":["MSSQL Provider","Parameters","DatabaseVendor","ConnectionString","ConnectionStringName","IndividualsAmount","UseOptionTypes","Using Microsoft.Data.SqlClient.dll instead of build-in System.Data.SqlClient.dll","Using SQLProvider with SSDT"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/mssqlssdt.html","title":"MSSQL SSDT Provider\r\n","content":"MSSQL SSDT Provider\r\nThe SSDT provider allows types to be provided via SQL Server schema scripts in an SSDT project. No live database connection is required!\r\nParameters\r\nDatabaseVendor (required)\r\nUse MSSQLSERVER_SSDT from the FSharp.Data.Sql.Common.DatabaseProviderTypes enumeration.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet dbVendor = Common.DatabaseProviderTypes.MSSQLSERVER_SSDT\r\n\r\nSsdtPath (required)\r\nThe SsdtPath must point to a .dacpac file.\r\nNotes:\r\n\r\nA .dacpac file is generated when an SSDT project is built, and can be found in the bin/Debug folder.\r\nFor development, you can set the SsdtPath to point to the generated .dacpac file in the SSDT project Debug folder. (Using a [\u0026lt;Literal\u0026gt;] ssdtPath allows relative pathing).\r\nFor deployment, the SSDT provider will search for the .dacpac file in the entry assembly folder.\r\nLinking the generated .dacpac file to your project and setting it to CopyToOutputDirectory will ensure that it will exist in the assembly folder for deployment.\r\n\r\n[\u0026lt;Literal\u0026gt;]\r\nlet ssdtPath = __SOURCE_DIRECTORY__ \u002B @\u0026quot;/../../files/mssqlssdt/AdventureWorks_SSDT.dacpac\u0026quot;\r\n\r\nExample of the minimal required options for the SSDT provider:\r\ntype DB = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.MSSQLSERVER_SSDT, SsdtPath = ssdtPath\u0026gt;\r\n\r\n// To reload schema: 1) uncomment the line below; 2) save; 3) recomment; 4) save again and wait.\r\n//DB.GetDataContext().\u0060\u0060Design Time Commands\u0060\u0060.ClearDatabaseSchemaCache\r\n\r\nReloading the schema\r\nIt is helpful to keep the above Design Time Command commented out just below your SqlDataProvider type for refreshing the generated types after a schema change.\r\nOptional Parameters\r\nUseOptionTypes\r\nIf FSharp.Data.Sql.Common.NullableColumnType.OPTION, F# option types will be used in place of nullable database columns. If NO_OPTION, you will always receive the default value of the column\u0027s type even if it is null in the database.\r\nTable Names Filter\r\nThe SSDT provider currently supports a simple comma delimited list of allowed table names (wildcards are not currently supported).\r\nAdventureWorks Example\r\nlet ctx = DB.GetDataContext()\r\n\r\nlet orderDetails =\r\n query {\r\n for o in ctx.SalesLt.SalesOrderHeader do\r\n for d in o.\u0060\u0060SalesLT.SalesOrderDetail by SalesOrderID\u0060\u0060 do\r\n select (o.SalesOrderId, o.OrderDate, o.SubTotal, d.OrderQty, d.ProductId, d.LineTotal)\r\n }\r\n\r\nWhat is SSDT?\r\nSQL Server Data Tools (SSDT) is a modern development tool for building SQL Server relational databases, databases in Azure SQL,\r\nAnalysis Services (AS) data models, Integration Services (IS) packages, and Reporting Services (RS) reports.\r\nIt allows you to easily compare and synchronize schema changes between your SQL Server database and the current state of your .sql scripts in source control.\r\nSchemas can be synchronized bi-directionally (SSDT -\u0026gt; SQL Server or SQL Server -\u0026gt; SSDT).\r\nAdvantages of using the SSDT provider\r\nThe main advantage to using the SSDT provider is that it does not require a live connection to the database.\r\nThis makes it easier to run on a build server without having to manually spin up a database instance.\r\nAnother advantage is that since your SSDT scripts are checked into your source control, you can easily have different schemas in each branch, so each branch can compile according its local schema snapshot.\r\nHow to create an SSDT Project\r\nSSDT Projects can be created in two ways:\r\n* Visual Studio SSDT\r\n* Azure Data Studio via the SQL Database Projects Extension\r\nKnown Issues\r\nTables\r\n\r\nUser defined data types are not yet supported\r\nComputed table columns will default to a data type of System.Object since the data type is not listed in the .dacpac file. (See Type Annotations below.)\r\n\r\nViews\r\n\r\nComputed view columns will default to a data type of System.Object since the data type is not listed in the .dacpac file. (See Type Annotations below.)\r\n\r\nType Annotations\r\nAs a work-around for computed table and view columns having unresolved data types, the SSDT provider allows you to add type annotations directly to the table or view as in-line comments.\r\nIn the SalesOrderDetail.sql example table below, [LineTotal] is a computed column. Since the .dacpac file cannot determine the datatype for computed columns, the data type of the generated property will be defaulted to obj.\r\nAs a workaround, an in-line type annotation /* MONEY NOT NULL /* can be added.\r\nNOTE: for computed table columns, the comment annotation must be contained within the parentheses.\r\nCREATE TABLE [SalesLT].[SalesOrderDetail] (\r\n[SalesOrderID] INT NOT NULL,\r\n[SalesOrderDetailID] INT IDENTITY (1, 1) NOT NULL,\r\n[OrderQty] SMALLINT NOT NULL,\r\n[ProductID] INT NOT NULL,\r\n[UnitPrice] MONEY NOT NULL,\r\n[UnitPriceDiscount] MONEY CONSTRAINT [DF_SalesOrderDetail_UnitPriceDiscount] DEFAULT ((0.0)) NOT NULL,\r\n[LineTotal] AS (isnull(([UnitPrice]*((1.0)-[UnitPriceDiscount]))*[OrderQty],(0.0)) /* MONEY NOT NULL */ ),\r\n[rowguid] UNIQUEIDENTIFIER CONSTRAINT [DF_SalesOrderDetail_rowguid] DEFAULT (newid()) ROWGUIDCOL NOT NULL,\r\n[ModifiedDate] DATETIME CONSTRAINT [DF_SalesOrderDetail_ModifiedDate] DEFAULT (getdate()) NOT NULL,\r\n...\r\n\r\nIn the example dbo.v_Hours view below, the Hours column is not linked back to the dbo.TimeEntries.Hours column in the .dacpac metadata because it is a calculated field, so the data type of the generated property will be defaulted to obj.\r\nAdding a type annotation within an in-line comment will inform the SSDT provider of the data type to use in the generated Hours property:\r\nCREATE VIEW dbo.v_Hours\r\nAS\r\nSELECT dbo.Projects.Name AS ProjectName, COALESCE (dbo.TimeEntries.Hours, 0) AS Hours /* decimal not null */, dbo.Users.Username\r\nFROM dbo.Projects\r\nINNER JOIN dbo.TimeEntries on dbo.Projects.Id = dbo.TimeEntries.ProjectId\r\nINNER JOIN dbo.Users on dboUsers.Id = dbo.TimeEntries.UserId\r\n\r\nNotes:\r\n\r\nIf no null constraint is added after the column type, it will allow nulls by default.\r\nThe annotations are case-insensitive.\r\nHovering over a generated view property will designate if the data type was derived from a type annotations (or if it needs one).\r\nDo not include length information in the type annotation. For example, use varchar, not varchar(20).\r\n\r\nFunctions\r\n\r\nFunctions are not yet implemented\r\n\r\nIndividuals\r\n\r\nGet \u0022Individuals\u0022 feature is not implemented (because it requires a database connection)\r\n\r\n","headings":["MSSQL SSDT Provider","Parameters","DatabaseVendor (required)","SsdtPath (required)","Notes:","Example of the minimal required options for the SSDT provider:","Reloading the schema","Optional Parameters","UseOptionTypes","Table Names Filter","AdventureWorks Example","What is SSDT?","Advantages of using the SSDT provider","How to create an SSDT Project","Known Issues","Tables","Views","Type Annotations","Notes:","Functions","Individuals"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/mysql.html","title":"MySQL Provider\r\n","content":"MySQL Provider\r\nParameters\r\nConnectionString\r\nBasic connection string used to connect to MySQL instance; typical connection\r\nstring parameters apply here. See\r\nMySQL Connector/NET Connection Strings Documentation\r\nfor a complete list of connection string options.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet connString = \u0026quot;Server=localhost;Database=HR;User=root;Password=password\u0026quot;\r\n\r\nTo deal with some MySQL data connection problems you might want to add some more parameters to connectionstring:\r\nAuto Enlist=false; Convert Zero Datetime=true;\r\nConnectionStringName\r\nInstead of storing the connection string in the source code, you\r\ncan store it in the App.config file. This is the name of the\r\nconnectionString key/value pair stored in App.config (TODO: confirm filename).\r\n// found in App.config (TODO: confirm)\r\nlet connexStringName = \u0026quot;DefaultConnectionString\u0026quot;\r\n\r\nDatabase Vendor\r\nUse MYSQL from the FSharp.Data.Sql.Common.DatabaseProviderTypes enumeration.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet dbVendor = Common.DatabaseProviderTypes.MYSQL\r\n\r\nResolution Path\r\nPath to search for assemblies containing database vendor specific connections and custom types. Type the path where\r\nMysql.Data.dll is stored. Both absolute and relative paths are supported.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet resPath = __SOURCE_DIRECTORY__ \u002B @\u0026quot;/../../../packages/tests/MySql.Data/lib/net45\u0026quot;\r\n\r\nIndividuals Amount\r\nSets the count of records to load for each table. See individuals for further info.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet indivAmount = 1000\r\n\r\nUse Option Types\r\nIf true, F# option types will be used in place of nullable database columns. If false, you will always receive the default value of the column\u0027s type even if it is null in the database.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet useOptTypes = FSharp.Data.Sql.Common.NullableColumnType.OPTION\r\n\r\nExample\r\ntype sql = SqlDataProvider\u0026lt;\r\n dbVendor,\r\n connString,\r\n ResolutionPath = resPath,\r\n IndividualsAmount = indivAmount,\r\n UseOptionTypes = useOptTypes,\r\n Owner = \u0026quot;HR\u0026quot;\r\n \u0026gt;\r\nlet ctx = sql.GetDataContext()\r\n\r\nlet employees = \r\n ctx.Hr.Employees \r\n |\u0026gt; Seq.map (fun e -\u0026gt; e.ColumnValues |\u0026gt; Seq.toList)\r\n |\u0026gt; Seq.toList\r\n\r\nWorking with Type-mappings\r\nBasic types\r\nMySql.Data types are not always the ones you have used to in .NET, so here is a little help:\r\nlet myEmp = \r\n query {\r\n for jh in ctx.Hr.JobHistory do\r\n where (jh.Years \u0026gt; 10u)\r\n select (jh)\r\n } |\u0026gt; Seq.head\r\n\r\nlet myUint32 = 10u\r\nlet myInt64 = 10L\r\nlet myUInt64 = 10UL\r\n\r\nSystem.Guid Serialization\r\nIf you use string column to save a Guid to database, you may want to skip the hyphens (\u0022-\u0022)\r\nwhen serializing them:\r\nlet myGuid = System.Guid.NewGuid() //e.g. b8fa7880-ce44-4315-8d60-a160e5734c4b\r\n\r\nlet myGuidAsString = myGuid.ToString(\u0026quot;N\u0026quot;) // e.g. \u0026quot;b8fa7880ce4443158d60a160e5734c4b\u0026quot;\r\n\r\nThe problem with this is that you should never forgot to use \u0022N\u0022 in anywhere.\r\nSystem.DateTime Serialization\r\nAnother problem with MySql.Data is that DateTime conversions may fail if your culture is\r\nnot the expected one.\r\nSo you may have to convert datetimes as strings instead of using just myEmp.BirthDate \u0026lt;- DateTime.UtcNow:\r\nmyEmp.SetColumn(\u0026quot;BirthDate\u0026quot;, DateTime.UtcNow.ToString(\u0026quot;yyyy-MM-dd HH\\:mm\\:ss\u0026quot;) |\u0026gt; box)\r\n\r\nNotice that if you use .ToString(\u0022s\u0022) there will be \u0022T\u0022 between date and time: \u0022yyyy-MM-ddTHH\\:mm\\:ss\u0022.\r\nAnd comparing two datetimes as strings with \u0022T\u0022 and without \u0022T\u0022 will generate a problem with the time-part.\r\nIf your DateTime columns are strings in the database, you can use DateTime.Parse in your where-queries:\r\nlet longAgo = DateTime.UtcNow.AddYears(-5)\r\nlet myEmp = \r\n query {\r\n for emp in ctx.Hr.Employees do\r\n where (DateTime.Parse(emp.HireDate) \u0026gt; longAgo)\r\n select (emp)\r\n } |\u0026gt; Seq.head\r\n\r\nYou should be fine even with canonical functions like DateTime.Parse(a.MeetStartTime).AddMinutes(10.).\r\nCaveats / Additional Info\r\nCheck General, Static Parameters and Querying documentation.\r\nSupport for MySqlConnector\r\nMySqlConnector is alternative driver to use instead of MySql.Data.dll.\r\nIt has less features but a lot better performance than the official driver.\r\nYou can use it with SQLProvider:\r\nJust remove MySql.Data.dll from your resolutionPath and insert there MySqlConnector.dll instead. (Get the latest from NuGet.)\r\nIt uses references to System.Buffers.dll, System.Runtime.InteropServices.RuntimeInformation.dll and System.Threading.Tasks.Extensions.dll\r\nso copy those files also to your referencePath. You can get them from corresponding NuGet packages.\r\nIf you want to use the drivers in parallel, you need two resolution paths:\r\ntype HRFast = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.MYSQL, connString, ResolutionPath = @\u0026quot;c:\\mysqlConnectorPath\u0026quot;, Owner = \u0026quot;HR\u0026quot;\u0026gt;\r\ntype HRProcs = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.MYSQL, connString, ResolutionPath = @\u0026quot;c:\\MysqlDataPath\u0026quot;, Owner = \u0026quot;HR\u0026quot;\u0026gt;\r\n\r\nExample performance difference from our unit tests\r\nOne complex query:\r\nMySql.Data.dll: Real: 00:00:00.583, CPU: 00:00:00.484, GC gen0: 1, gen1: 0, gen2: 0\r\nMySqlConnector.dll: Real: 00:00:00.173, CPU: 00:00:00.093, GC gen0: 1, gen1: 0, gen2: 0\r\n\r\nLot of async queries:\r\nMySQL.Data.dll Real: 00:00:01.425, CPU: 00:00:02.078, GC gen0: 16, gen1: 1, gen2: 0\r\nMySqlConnector.dll: Real: 00:00:01.091, CPU: 00:00:02.000, GC gen0: 14, gen1: 1, gen2: 0\r\n\r\n","headings":["MySQL Provider","Parameters","ConnectionString","ConnectionStringName","Database Vendor","Resolution Path","Individuals Amount","Use Option Types","Example","Working with Type-mappings","Basic types","System.Guid Serialization","System.DateTime Serialization","Caveats / Additional Info","Support for MySqlConnector","Example performance difference from our unit tests"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/netstandard.html","title":".NET Standard / .NET Core support\r\n","content":".NET Standard / .NET Core support\r\nThis is very initial / experimental, from version 1.1.18.\r\nInstall e.g. with: dotnet add package SQLProvider --version 1.1.18\r\nYou will need some configuration to your project files, see the examples.\r\n- You need a path to fsc.\r\n- You need your database driver and dependency dlls to resolutionPath-folder.\r\nCore / NetStandard:\r\n | Win10 | Mac | Ubuntu (needs sudo) | Comments | \r\nMicrosoft SQL Server | [x] | [x] | [x] | See prebuild task. |\r\nPostgres | [x] | [x] | [x] | See post-build task. |\r\nMySQL / MariaDB | [x] | [x] | [x] | See post-build task. |\r\nSQLite | [x] | | | See post-build task. Builds on Win, runs on all |\r\nFireBird | ? | ? | ? | Not tested. |\r\nOracle | | | | No ODP.NET-driver yet. |\r\nOdbc | | | | Not supported. |\r\nAccess | | | | Not supported. |\r\n\r\n.NET 4.5.1 / Mono: All should work.\r\n\r\nExample projects\r\nThere are some example .NET-Coreapp 2.0 projects at: tests\\SqlProvider.Core.Tests\r\nThere is a build.cmd which runs as follows:\r\ndotnet restore\r\ndotnet build\r\ndotnet run\r\n\r\nLimitations\r\nYou need your database connection driver to also support .NET Core.\r\nIf your database connection driver has external dependencies, they have to be also present\r\n(e.g. a project prebuild-task to move them to resolution path).\r\nConnection string can be passed as hard-coded static parameter (development) or GetDataContext(connectionstring) parameter on runtime, but fetching it automatically from the application configuration is not supported.\r\nThe target frameworks are defined in the project file: \u0026lt;TargetFrameworks\u0026gt;net461;netcoreapp2.0;netstandard2.0\u0026lt;/TargetFrameworks\u0026gt;\r\nCorresponding files goes to root bin paths, e.g.: \\bin\\netstandard2.0\r\nMicrosoft Sql Server\r\nIf you plan to run Microsoft SQL Server, you need a dependency to System.Data.SqlClient and a post-build task to\r\ncopy correct dll from under System.Data.SqlClient\\runtimes\\...\\ to your execution folder.\r\nMySql\r\nMySQL is using MySQLConnector.\r\nAlternative is to use provided custom build of MySQL.Data.dll (6.10-rc) compiled from sources to .Net Standard 2.0.\r\nAs the official MySQL.Data.dll does not support .NET Standard 2.0. See: https://bugs.mysql.com/bug.php?id=88016\r\nSQLite\r\nSQLite is using Microsoft.Data.Sqlite library which has dependency to non-managed e_sqlite3.dll.\r\nEnsure that the correct platform specific file is found either from referencePath or PATH environment variable.\r\nDue to lack of Mono-support in Microsoft.Data.SQLite and Core-support in System.Data.SQLite, there is no\r\ncommon driver that could work on both environments. That\u0027s why build is not possible with Mac/Ubuntu.\r\nMicrosoft.Data.Sqlite.Core.Backport could maybe work, not tested.\r\nNon-Windows environment (Mac / Ubuntu / Linux / ...)\r\nOn Windows you can reference .NET Standard 2.0 dlls in FSharp interactive but in Osx or Linux you cannot as Mono is not .NET Standard 2.0 compatible.\r\nNon-Windows typeprovider will call Mono on compile-time. Mono will use .Net 4.5.1 libraries.\r\nTypeprovider handles that on compilation, and after compile your assembly will ve .NET Core compatible.\r\nBut your compilation resolutionPath reference assemblies have to be .Net 4.5.1 version and your build folder\r\nhave to have core references, e.g. via PackageReferences.\r\nOn Ubuntu you probably have to use sudo for both dotnet restore and dotnet build.\r\nIf you forgot the sudo, try to remove bin and obj folders and then run restore again.\r\nSome Technical Details\r\n.NET Standard solution is located at /src/SQLProvider.Standard/SQLProvider.Standard.fsproj\r\nThe following files is needed to the NuGet package, from the .NET Standard SDK:\r\nnetstandard.dll, System.Console.dll, System.IO.dll, System.Reflection.dll, System.Runtime.dll\r\nYou can find net461 versions of them by default from (e.g. 2.0.0, can be also something else like 2.0.2):\r\nWin: C:\\Program Files\\dotnet\\sdk\\2.0.0\\Microsoft\\Microsoft.NET.Build.Extensions\\net461\\lib\\\r\nOthers: /usr/local/share/dotnet/sdk/2.0.0/Microsoft/Microsoft.NET.Build.Extensions/net461/lib\r\nand also System.Data.SqlClient.dll from that NuGet package.\r\nThe NuGet cache is located at:\r\nWin: C:\\Users\\(your-user-name)\\.nuget\\packages\\SQLProvider\\\r\nOthers: ~/.nuget/packages/SQLProvider/\r\n","headings":[".NET Standard / .NET Core support","Example projects","Limitations","Microsoft Sql Server","MySql","SQLite","Non-Windows environment (Mac / Ubuntu / Linux / ...)","Some Technical Details"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/odbc.html","title":"ODBC\r\n","content":"ODBC\r\nDSN\r\nConfiguring DSN on Windows ODBC Data Source Administrator server:\r\nControl Panel -\u0026gt; Administrative Tools -\u0026gt; Data Sources (ODBC)\r\n(or launch: c:\\windows\\syswow64\\odbcad32.exe)\r\nand add your driver to DSN.\r\nopen FSharp.Data.Sql \r\n[\u0026lt;Literal\u0026gt;] \r\nlet dnsConn = @\u0026quot;DSN=foo\u0026quot; \r\ntype db = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.ODBC, dnsConn\u0026gt;\r\nlet ctx = db.GetDataContext()\r\n\r\nYou don\u0027t need DSN for all data source, e.g. MS Access can be used directly\r\nthrough the database file with a connection string like:\r\n@\u0022Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\\Northwind.mdb\u0022\r\nQuote Character\r\nBecause there are a lot of different kind of ODBC connection types, you can set\r\nquote characters for SQL-clauses with optional parameter OdbcQuote.\r\n\r\nOdbcQuoteCharacter.SQUARE_BRACKETS\r\nOdbcQuoteCharacter.GRAVE_ACCENT\r\nOdbcQuoteCharacter.NO_QUOTES\r\nOdbcQuoteCharacter.DOUBLE_QUOTES\r\nOdbcQuoteCharacter.APHOSTROPHE\r\n\r\nand the difference in executed SQL is:\r\nSELECT [CourseID], [CourseName] FROM [Course] as [q] \r\nSELECT \u0060CourseID\u0060, \u0060CourseName\u0060 FROM \u0060Course\u0060 as \u0060q\u0060 \r\nSELECT CourseID , CourseName FROM Course as q \r\nSELECT \u0022CourseID\u0022, \u0022CourseName\u0022 FROM \u0022Course\u0022 as \u0022q\u0022\r\nSELECT \u0027CourseID\u0027, \u0027CourseName\u0027 FROM \u0027Course\u0027 as \u0027q\u0027\r\n\r\n[\u0026lt;Literal\u0026gt;] \r\nlet quotechar = FSharp.Data.Sql.Common.OdbcQuoteCharacter.DEFAULT_QUOTE\r\ntype db2 = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.ODBC, dnsConn, OdbcQuote = quotechar\u0026gt;\r\nlet ctx2 = db2.GetDataContext()\r\n\r\nDTC Transactions\r\nSQLProvider will do DTC-transactions over CRUD-operations. That will ensure\r\nthat all the database operations will either success of fail at once, when you do\r\nctx.SubmitUpdates().\r\nHowever, some ODBC-drivers (like MS-Access) don\u0027t support\r\nDTC-transactions and will fail on constructor call. The transaction creation can be\r\ndisabled in context creation:\r\nlet ctx3 = \r\n db.GetDataContext(\r\n { Timeout = TimeSpan.MaxValue; \r\n IsolationLevel = Transactions.IsolationLevel.DontCreateTransaction\r\n }:FSharp.Data.Sql.Transactions.TransactionOptions)\r\n\r\nDon\u0027t disable transactions if you don\u0027t need to.\r\n","headings":["ODBC","DSN","Quote Character","DTC Transactions"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/oracle.html","title":"SQL Provider for Oracle\r\n","content":"SQL Provider for Oracle\r\nOracle is based on the current release (12.1.0.1.2) of the managed ODP.NET driver found here. However although the managed version is recommended it should also work with previous versions of the native driver.\r\n#r \u0026quot;FSharp.Data.SqlProvider.dll\u0026quot;\r\n\r\nopen FSharp.Data.Sql\r\n\r\ntype sql = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.ORACLE, connectionString, ResolutionPath = resolutionPath\u0026gt;\r\nlet ctx = sql.GetDataContext()\r\n\r\nlet customers = ctx.Customers |\u0026gt; Seq.toArray\r\n\r\nBecause Oracle databases can be huge, there is an optional constructor parameter TableNames that can be used as a filter.\r\n","headings":["SQL Provider for Oracle"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/outline.html","title":"SQL Type Provider\r\n","content":"SQL Type Provider\r\nProject Home\r\nNOTE: test code examples, tool-tip capability in projectscaffold\r\nFeatures \u0026amp; Capabilities:\r\n* erasing\r\n* doesn\u0027t generate code; more lightweight\r\n* feeble\r\n* individuals - things set as static values (such as configuration) can be set,\r\nso exceptions can be thrown if data is not matching expected\r\nOutline of Docs\r\n\r\n\r\nOverview\r\n\r\nmore like ORM\r\nall mutating queries are transactional\r\nsupports identity columns\r\n\r\n\r\n\r\nBasic Setup / Configuration\r\n\r\n\r\nSpecial Cases:\r\n\r\nSpecial case for Oracle\r\n\r\nSQLite\r\n\r\nMixed mode assembly\r\nspecial version\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nBasic Queries\r\n\r\n\r\nCaveats:\r\n\r\nPrimary key required for update, delete\r\n\r\nRelationships aren\u0027t \u0022intelligent\u0022 - have to create parent-child \r\nmanually\r\n\r\n\r\n\r\n\r\n\r\n\r\nCustom Operators\r\n\r\nIN finds one match in a set\r\n\r\nNote for slow querying: Using queries aren\u0027t required, not using the \r\nqueries will select all rows from the table\r\n\r\n(look up info on !! operator for joins)\r\n\r\n\r\n\r\nLINQ support\r\n\r\nfeatures aren\u0027t the same as the MS SQL to LINQ Provider\r\n\r\nMS version uses sqlmetal, leveraging LINQ2SQL - this one does not as \r\nit\u0027s only supports a few of the query CE keywords\r\n\r\n\r\n\r\n\r\nStored Procedures\r\n\r\n\r\nRoss McKinley\u0027s Blog entry on CRUD and SP\u0027s note check against library for accuracy\r\n\r\nLevel of support varies based on DB type\r\n\r\n\r\n\r\n\r\n\r\nDatabase-Specific\r\n\r\nMSSQL\r\nOracle\r\nSQLite\r\nPostgreSQL\r\nMySQL\r\nODBC experimental (only supports SELECT \u0026amp; WHERE)\r\n\r\n\r\n\r\nTODO\r\nItems mentioned in documentation, however need further documantation:\r\n* static parameters in creating static type alias\r\n* querying.fsx\r\n* constraints-relationships.fsx\r\n","headings":["SQL Type Provider","Outline of Docs","TODO"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/parameters.html","title":"SQL Provider Static Parameters\r\n","content":"SQL Provider Static Parameters\r\nGlobal parameters\r\nThese are the \u0022common\u0022 parameters used by all SqlProviders.\r\nAll static parameters must be known at compile time, for strings this can be\r\nachieved by adding the [\u0026lt;Literal\u0026gt;] attribute if you are not passing it inline.\r\nConnectionString\r\nThis is the connection string commonly used to connect to a database server\r\ninstance. See the documentation on your desired database type to find out\r\nmore.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet sqliteConnectionString =\r\n \u0026quot;Data Source=\u0026quot; \u002B __SOURCE_DIRECTORY__ \u002B @\u0026quot;\\northwindEF.db;Version=3\u0026quot;\r\n\r\nConnectionStringName\r\nInstead of storing the connection string in the source code / fsx script, you\r\ncan store values in the App.config file:\r\n\u0026lt;connectionStrings\u0026gt; \r\n \u0026lt;add name=\u0022MyConnectionString\u0022 \r\n providerName=\u0022System.Data.ProviderName\u0022 \r\n connectionString=\u0022Valid Connection String;\u0022 /\u0026gt; \r\n\u0026lt;/connectionStrings\u0026gt;\r\n\r\nAnother, usually easier option is to give a runtime connection string as parameter for .GetDataContext(...) method.\r\nIn your source file:\r\nlet connexStringName = \u0026quot;MyConnectionString\u0026quot;\r\n\r\nDatabaseVendor\r\nSelect enumeration from Common.DatabaseProviderTypes to specify which database\r\ntype the provider will be connecting to.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet dbVendor = Common.DatabaseProviderTypes.SQLITE\r\n\r\nResolutionPath\r\nWhen using database vendors other than SQL Server, Access and ODBC, a third party driver\r\nis required. This parameter should point to an absolute or relative directory where the\r\nrelevant assemblies are located. See the database vendor specific page for more details.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet resolutionPath =\r\n __SOURCE_DIRECTORY__ \u002B @\u0026quot;..\\..\\..\\files\\sqlite\u0026quot;\r\n\r\nThe resolution path(s) (as can be semicolon separated if many) should point the\r\ndatabase driver files and their reference assemblies) that work on design-time.\r\nSo depending on your IDE you probably want there .NET Standard 2.0 (or 2.1) versions\r\nand not the latest .NET runtime, even when you target your final product to latest .NET.\r\nNote on .NET 5 PublishSingleFile and ResolutionPath\r\nIf you are publishing your app using .NET 5\u0027s PublishSingleFile mode, the driver will\r\nbe loaded from the bundle itself rather than from a separate file on the drive. As such,\r\nthe ResolutionPath parameter will not work for the published app, nor will the automatic\r\nassembly resolution implemented within SQLProvider.\r\nSQLProvider attempts to load the assembly from the AppDomain in such case. This means\r\nthat your driver\u0027s assembly must be loaded by your application for SQLProvider to find\r\nit. To do so, simply use the types of your driver before calling the .GetDataContext(...)\r\nmethod, such as in this example, using MySqlConnector. The specific type you refer\r\nto does not matter.\r\ntypeof\u0026lt;MySqlConnector.Logging.MySqlConnectorLogLevel\u0026gt;.Assembly |\u0026gt; ignore\r\nlet ctx = sqlType.GetDataContext()\r\n\r\nIndividualsAmount\r\nNumber of instances to retrieve when using the individuals feature.\r\nDefault is 1000.\r\nlet indivAmt = 500\r\n\r\nUseOptionTypes\r\nIf set to FSharp.Data.Sql.Common.NullableColumnType.OPTION, all nullable fields will be represented by F# option types. If NO_OPTION, nullable\r\nfields will be represented by the default value of the column type - this is important because\r\nthe provider will return 0 instead of null, which might cause problems in some scenarios.\r\nThe third option is VALUE_OPTION where nullable fields are represented by ValueOption struct.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet useOptionTypes = FSharp.Data.Sql.Common.NullableColumnType.OPTION\r\n\r\nContextSchemaPath\r\nDefining ContextSchemaPath and placing a file with schema information according to the definition\r\nenables offline mode that can be useful when the database is unavailable or slow to connect or access.\r\nSchema information file can be generated by calling design-time method SaveContextSchema under Design Time Commands:\r\nctx.\u0060\u0060Design Time Commands\u0060\u0060.SaveContextSchema\r\n\r\nThis method doesn\u0027t affect runtime execution. Note that since SQLProvider loads schema information lazily,\r\ncalling SaveContextSchema only saves the portion of the database schema that is sufficient to compile\r\nqueries referenced in the scope of the current solution or script. Therefore it is recommended to execute\r\nit after the successful build of the whole solution. Type the method name with parentheses, if you then\r\ntype a dot (.), you should see a tooltip with information when the schema was last saved. Once the schema\r\nis saved, the outcome of the method execution is stored in memory, so the file will not be overwritten.\r\nIn case the database schema changes and the schema file must be updated, remove the outdated file, reload\r\nthe solution and retype or uncomment a call to SaveContextSchema to regenerate the schema file.\r\nThere is a tool method FSharp.Data.Sql.Common.OfflineTools.mergeCacheFiles to merge multiple files together.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet contextSchemaPath =\r\n __SOURCE_DIRECTORY__ \u002B @\u0026quot;.\\sqlite.schema\u0026quot;\r\n\r\nPlatform Considerations\r\nMSSQL\r\nTableNames to filter amount of tables.\r\nOracle\r\nTableNames to filter amount of tables, and Owner.\r\nOwner (Used by Oracle, MySQL and PostgreSQL)\r\nThis has different meanings when running queries against different database vendors\r\nFor PostgreSQL, this sets the schema name where the target tables belong to. Can be also a list separated by spaces, newlines, commas or semicolons.\r\nFor MySQL, this sets the database name (Or schema name, for MySQL, it\u0027s the same thing). Can be also a list separated by spaces, newlines, commas or semicolons.\r\nFor Oracle, this sets the owner of the scheme.\r\nSQLite\r\nThe additional SQLiteLibrary parameter can be used to specify\r\nwhich SQLite library to load.\r\nPostgreSQL\r\nNo extra parameters.\r\nMySQL\r\nNo extra parameters.\r\nODBC\r\nNo extra parameters.\r\nExample\r\nIt is recommended to use named static parameters in your type provider definition like so\r\ntype sql = SqlDataProvider\u0026lt;\r\n ConnectionString = sqliteConnectionString,\r\n DatabaseVendor = dbVendor,\r\n ResolutionPath = resolutionPath,\r\n UseOptionTypes = useOptionTypes\r\n \u0026gt;\r\n\r\nSQL Provider Data Context Parameters\r\nBesides the static parameters the .GetDataContext(...) method has optional parameters:\r\n\r\nconnectionString - The database connection string on runtime.\r\nresolutionPath - The location to look for dynamically loaded assemblies containing database vendor specific connections and custom types\r\ntransactionOptions - TransactionOptions for the transaction created on SubmitChanges.\r\ncommandTimeout - SQL command timeout. Maximum time for single SQL-command in seconds.\r\nselectOperations - Execute select-clause operations in SQL database rahter than .NET-side.\r\n\r\n","headings":["SQL Provider Static Parameters","Global parameters","ConnectionString","ConnectionStringName","DatabaseVendor","ResolutionPath","Note on .NET 5 PublishSingleFile and ResolutionPath","IndividualsAmount","UseOptionTypes","ContextSchemaPath","Platform Considerations","MSSQL","Oracle","Owner (Used by Oracle, MySQL and PostgreSQL)","SQLite","PostgreSQL","MySQL","ODBC","Example","SQL Provider Data Context Parameters"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/postgresql.html","title":"PostgreSQL Provider\r\n","content":"PostgreSQL Provider\r\nParameters\r\nDatabaseVendor\r\nFrom the FSharp.Data.Sql.Common.DatabaseProviderTypes enumeration. For PostgreSQL,\r\nuse Common.DatabaseProviderTypes.POSTGRESQL.\r\nlet [\u0026lt;Literal\u0026gt;] dbVendor = Common.DatabaseProviderTypes.POSTGRESQL\r\n\r\nConnectionString\r\nBasic connection string used to connect to PostgreSQL instance; typical\r\nconnection strings for the driver apply here. See\r\nPostgreSQL Connecting Strings Documentation\r\nfor a complete list of connection string options.\r\nlet [\u0026lt;Literal\u0026gt;] connString = \u0026quot;Host=localhost;Database=test;Username=test;Password=test\u0026quot;\r\n\r\nConnectionStringName\r\nInstead of storing the connection string in the source code / fsx script, you\r\ncan store values in the App.config file. This is the name of the\r\nconnectionString key/value pair stored in App.config (TODO: confirm file name).\r\n// found in App.config (TOOD: confirm)\r\nlet [\u0026lt;Literal\u0026gt;] connexStringName = \u0026quot;DefaultConnectionString\u0026quot;\r\n\r\nResolution Path\r\nPath to search for assemblies containing database vendor specific connections\r\nand custom types. Type the path where Npgsql.Data.dll is stored.\r\nlet [\u0026lt;Literal\u0026gt;] resPath = @\u0026quot;C:\\Projects\\Libs\\Npgsql\u0026quot;\r\n\r\nIndividualsAmount\r\nSets the count to load for each individual. See individuals\r\nfor further info.\r\nlet [\u0026lt;Literal\u0026gt;] indivAmount = 1000\r\n\r\nUseOptionTypes\r\nIf true, F# option types will be used in place of nullable database columns.\r\nIf false, you will always receive the default value of the column\u0027s type, even\r\nif it is null in the database.\r\nlet [\u0026lt;Literal\u0026gt;] useOptTypes = true\r\n\r\nOwner\r\nIndicates the schema or schemas to which SqlProvider will try to provide access to.\r\nMultiple schemas can be indicated, separated by commas or semicolons.\r\nDefaults to \u0022public\u0022.\r\nlet [\u0026lt;Literal\u0026gt;] owner = \u0026quot;public, admin, references\u0026quot;\r\n\r\n\r\ntype sql =\r\n SqlDataProvider\u0026lt;\r\n dbVendor,\r\n connString,\r\n \u0026quot;\u0026quot;, //ConnectionNameString can be left empty \r\n resPath,\r\n indivAmount,\r\n useOptTypes,\r\n owner\u0026gt;\r\n\r\n","headings":["PostgreSQL Provider","Parameters","DatabaseVendor","ConnectionString","ConnectionStringName","Resolution Path","IndividualsAmount","UseOptionTypes","Owner"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/programmability.html","title":"Programmability\r\n","content":"Programmability\r\ntype AdventureWorks = SqlDataProvider\u0026lt;Common.DatabaseProviderTypes.MSSQLSERVER, connStr\u0026gt;\r\nlet ctx = AdventureWorks.GetDataContext()\r\n\r\nQuerying views is just like querying tables. But executing a stored procedure or a function is a bit different:\r\nExecute a function in the Adventure Works database\r\nctx.Functions.UfnGetSalesOrderStatusText.Invoke(0uy)\r\n\r\nExecute a stored procedure in the Adventure Works database\r\nctx.Procedures.UspLogError.Invoke(1)\r\n\r\nExample of executing a procedure with async and reading the results:\r\nlet uspGetManagerEmployees =\r\n async {\r\n let! res = ctx.Procedures.UspGetManagerEmployees.InvokeAsync 2\r\n let mapped = res.ResultSet |\u0026gt; Array.map(fun i -\u0026gt; i.ColumnValues |\u0026gt; Map.ofSeq)\r\n mapped |\u0026gt; Array.iter(fun i -\u0026gt; \r\n printfn \u0026quot;Name: %O, Level: %O\u0026quot; i.[\u0026quot;FirstName\u0026quot;] i.[\u0026quot;RecursionLevel\u0026quot;]\r\n )\r\n } |\u0026gt; Async.StartAsTask\r\n\r\n // Name: Roberto, Level: 1\r\n // Name: Rob, Level: 2\r\n // Name: Gail, Level: 2\r\n // ...\r\n\r\n","headings":["Programmability"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/querying.html","title":"Querying\r\n","content":"How to see the SQL-clause?\r\nTo display / debug your SQL-clauses you can add listener for your logging framework to SqlQueryEvent:\r\nFSharp.Data.Sql.Common.QueryEvents.SqlQueryEvent |\u0026gt; Event.add (printfn \u0026quot;Executing SQL: %O\u0026quot;)\r\n\r\nThe event has separate fields of Command and Parameters\r\nfor you to store your clauses with a strongly typed logging system like Logary.\r\nQuerying\r\ntype sql = SqlDataProvider\u0026lt;\r\n Common.DatabaseProviderTypes.SQLITE,\r\n connectionString,\r\n SQLiteLibrary=Common.SQLiteLibrary.SystemDataSQLite,\r\n ResolutionPath = resolutionPath,\r\n CaseSensitivityChange = Common.CaseSensitivityChange.ORIGINAL\r\n \u0026gt;\r\nlet ctx = sql.GetDataContext()\r\n\r\nSQLProvider leverages F#\u0027s query {} expression syntax to perform queries\r\nagainst the database. Though many are supported, not all LINQ expressions are.\r\nlet example =\r\n query {\r\n for order in ctx.Main.Orders do\r\n where (order.Freight \u0026gt; 0m)\r\n sortBy (order.ShipPostalCode)\r\n skip 3\r\n take 4\r\n select (order)\r\n }\r\n\r\nlet test = example |\u0026gt; Seq.toArray |\u0026gt; Array.map(fun i -\u0026gt; i.ColumnValues |\u0026gt; Map.ofSeq)\r\n\r\nlet item =\r\n query {\r\n for order in ctx.Main.Orders do\r\n where (order.Freight \u0026gt; 0m)\r\n head\r\n }\r\n\r\nOr async versions:\r\nlet exampleAsync =\r\n task {\r\n let! res =\r\n query {\r\n for order in ctx.Main.Orders do\r\n where (order.Freight \u0026gt; 0m)\r\n select (order)\r\n } |\u0026gt; Seq.executeQueryAsync\r\n return res\r\n } \r\n\r\nlet itemAsync =\r\n task {\r\n let! item =\r\n query {\r\n for order in ctx.Main.Orders do\r\n where (order.Freight \u0026gt; 0m)\r\n } |\u0026gt; Seq.headAsync\r\n return item\r\n } \r\n\r\nIf you consider using asynchronous queries, read more from the async documentation.\r\nSELECT -clause operations\r\nYou can control the execution context of the select-operations by GetDataContext parameter selectOperations.\r\nThe LINQ-query stays the same. You have two options: DotNetSide or DatabaseSide.\r\nThis might have a significant effect on the size of data transferred from the database.\r\nSelectOperations.DotNetSide (Default)\r\nFetch the columns and run operations in .NET-side.\r\n let dc = sql.GetDataContext(SelectOperations.DotNetSide) // (same as without the parameter)\r\n query {\r\n for cust in dc.Main.Customers do\r\n select (if cust.Country = \u0026quot;UK\u0026quot; then (cust.City)\r\n else (\u0026quot;Outside UK\u0026quot;))\r\n } |\u0026gt; Seq.toArray\r\n\r\nSELECT \r\n [cust].[Country] as \u0027Country\u0027,\r\n [cust].[City] as \u0027City\u0027 \r\nFROM main.Customers as [cust]\r\n\r\nSelectOperations.DatabaseSide\r\nExecute the operations as part of SQL.\r\nlet dc = sql.GetDataContext(SelectOperations.DatabaseSide)\r\nlet qry = \r\n query {\r\n for cust in dc.Main.Customers do\r\n select (if cust.Country = \u0026quot;UK\u0026quot; then (cust.City)\r\n else (\u0026quot;Outside UK\u0026quot;))\r\n } |\u0026gt; Seq.toArray\r\n\r\nSELECT \r\n CASE WHEN ([cust].[Country] = @param1) THEN \r\n [cust].[City] \r\n ELSE @param2 \r\nEND as [result] \r\nFROM main.Customers as [cust]\r\n-- params @param1 - \u0022UK\u0022; @param2 - \u0022Outside UK\u0022\r\n\r\nIf your query is a sub-query (a part of larger query), then operations are always executed on DatabaseSide.\r\nSupported Query Expression Keywords\r\n\r\n\r\n\r\nKeyword\r\nSupported\r\nNotes\r\n\r\n\r\n\r\n\r\n.Contains()\r\nX\r\nopen System.Linq, in where, SQL IN-clause, nested query\r\n\r\n\r\n.Concat()\r\nX\r\nopen System.Linq, SQL UNION ALL-clause\r\n\r\n\r\n.Union()\r\nX\r\nopen System.Linq, SQL UNION-clause\r\n\r\n\r\nall\r\nX\r\n\r\n\r\n\r\naverageBy\r\nX\r\nSingle table (1)\r\n\r\n\r\naverageByNullable\r\nX\r\nSingle table (1)\r\n\r\n\r\ncontains\r\nX\r\n\r\n\r\n\r\ncount\r\nX\r\n\r\n\r\n\r\ndistinct\r\nX\r\n\r\n\r\n\r\nexactlyOne\r\nX\r\n\r\n\r\n\r\nexactlyOneOrDefault\r\nX\r\n\r\n\r\n\r\nexists\r\nX\r\n\r\n\r\n\r\nfind\r\nX\r\n\r\n\r\n\r\ngroupBy\r\nx\r\nSimple support (2)\r\n\r\n\r\ngroupJoin\r\n\r\n\r\n\r\n\r\ngroupValBy\r\n\r\n\r\n\r\n\r\nhead\r\nX\r\n\r\n\r\n\r\nheadOrDefault\r\nX\r\n\r\n\r\n\r\nif\r\nX\r\n\r\n\r\n\r\njoin\r\nX\r\n\r\n\r\n\r\nlast\r\n\r\n\r\n\r\n\r\nlastOrDefault\r\n\r\n\r\n\r\n\r\nleftOuterJoin\r\n\r\n\r\n\r\n\r\nlet\r\nx\r\n...but not using tmp variables in where-clauses\r\n\r\n\r\nmaxBy\r\nX\r\nSingle table (1)\r\n\r\n\r\nmaxByNullable\r\nX\r\nSingle table (1)\r\n\r\n\r\nminBy\r\nX\r\nSingle table (1)\r\n\r\n\r\nminByNullable\r\nX\r\nSingle table (1)\r\n\r\n\r\nnth\r\nX\r\n\r\n\r\n\r\nselect\r\nX\r\n\r\n\r\n\r\nskip\r\nX\r\n\r\n\r\n\r\nskipWhile\r\n\r\n\r\n\r\n\r\nsortBy\r\nX\r\n\r\n\r\n\r\nsortByDescending\r\nX\r\n\r\n\r\n\r\nsortByNullable\r\nX\r\n\r\n\r\n\r\nsortByNullableDescending\r\nX\r\n\r\n\r\n\r\nsumBy\r\nX\r\nSingle table (1)\r\n\r\n\r\nsumByNullable\r\nX\r\nSingle table (1)\r\n\r\n\r\ntake\r\nX\r\n\r\n\r\n\r\ntakeWhile\r\n\r\n\r\n\r\n\r\nthenBy\r\nX\r\n\r\n\r\n\r\nthenByDescending\r\nX\r\n\r\n\r\n\r\nthenByNullable\r\nX\r\n\r\n\r\n\r\nthenByNullableDescending\r\nX\r\n\r\n\r\n\r\nwhere\r\nx\r\nServer side variables must either be plain without .NET operations or use the supported canonical functions.\r\n\r\n\r\n\r\n\r\nCurrently SQL-provider doesn\u0027t generate nested queries in from-clauses, the query is flattened to a single select. Nested in-clauses in where-clauses are supported.\r\n(1) Single table, if you want multiple tables, use corresponding Seq query or async aggregates, like Seq.sumQuery or Seq.sumAsync.\r\n(2) Very simple groupBy (and having) is supported: Single table, or max 3 table joins before groupBy, with direct aggregates like .Count() or direct parameter calls like .Sum(fun entity -\u0026gt; entity.UnitPrice), and max 7 key columns. No nested grouping.\r\nCanonical Functions\r\nBesides that, we support these .NET-functions to transfer the logics to SQL-clauses (starting from SQLProvider version 1.0.57).\r\nIf you use these, remember to check your database indexes.\r\n.NET String Functions (.NET)\r\n\r\n\r\n\r\n.NET\r\nMsSqlServer\r\nPostgreSql\r\nMySql\r\nOracle\r\nSQLite\r\nMSAccess\r\nOdbc\r\nNotes\r\n\r\n\r\n\r\n\r\n.Substring(x)\r\nSUBSTRING\r\nSUBSTRING\r\nMID\r\nSUBSTR\r\nSUBSTR\r\nMid\r\nSUBSTRING\r\nStart position may vary (0 or 1 based.)\r\n\r\n\r\n.ToUpper()\r\nUPPER\r\nUPPER\r\nUPPER\r\nUPPER\r\nUPPER\r\nUCase\r\nUCASE\r\n\r\n\r\n\r\n.ToLower()\r\nLOWER\r\nLOWER\r\nLOWER\r\nLOWER\r\nLOWER\r\nLCase\r\nLCASE\r\n\r\n\r\n\r\n.Trim()\r\nLTRIM(RTRIM)\r\nTRIM(BOTH...)\r\nTRIM\r\nTRIM\r\nTRIM\r\nTrim\r\nLTRIM(RTRIM)\r\n\r\n\r\n\r\n.Length()\r\nDATALENGTH\r\nCHAR_LENGTH\r\nCHAR_LENGTH\r\nLENGTH\r\nLENGTH\r\nLen\r\nCHARACTER_LENGTH\r\n\r\n\r\n\r\n.Replace(a,b)\r\nREPLACE\r\nREPLACE\r\nREPLACE\r\nREPLACE\r\nREPLACE\r\nReplace\r\nREPLACE\r\n\r\n\r\n\r\n.IndexOf(x)\r\nCHARINDEX\r\nSTRPOS\r\nLOCATE\r\nINSTR\r\nINSTR\r\nInStr\r\nLOCATE\r\n\r\n\r\n\r\n.IndexOf(x, i)\r\nCHARINDEX\r\n\r\nLOCATE\r\nINSTR\r\n\r\nInStr\r\nLOCATE\r\n\r\n\r\n\r\n(\u002B)\r\n\u002B\r\n||\r\nCONCAT\r\n||\r\n||\r\n\u0026amp;\r\nCONCAT\r\n\r\n\r\n\r\n\r\n\r\nIn where-clauses you can also use .Contains(\u0022...\u0022), .StartsWith(\u0022...\u0022) and .EndsWith(\u0022...\u0022), which are translated to\r\ncorresponding LIKE-clauses (e.g. StartsWith(\u0022abc\u0022) is LIKE (\u0027asdf%\u0027).\r\nSubstring(startpos,length) is supported. IndexOf with length paramter is supported except PostgreSql and SQLite.\r\nOperations do support parameters to be either constants or other SQL-columns (e.g. x.Substring(x.Length() - 1)).\r\n.NET DateTime Functions\r\n\r\n\r\n\r\n.NET\r\nMsSqlServer\r\nPostgreSql\r\nMySql\r\nOracle\r\nSQLite\r\nMSAccess\r\nOdbc\r\nNotes\r\n\r\n\r\n\r\n\r\n.Date\r\nCAST(AS DATE)\r\nDATE_TRUNC\r\nDATE\r\nTRUNC\r\nSTRFTIME\r\nDateValue(Format)\r\nCONVERT(SQL_DATE)\r\n\r\n\r\n\r\n.Year\r\nYEAR\r\nDATE_PART\r\nYEAR\r\nEXTRACT\r\nSTRFTIME\r\nYear\r\nYEAR\r\n\r\n\r\n\r\n.Month\r\nMONTH\r\nDATE_PART\r\nMONTH\r\nEXTRACT\r\nSTRFTIME\r\nMonth\r\nMONTH\r\n\r\n\r\n\r\n.Day\r\nDAY\r\nDATE_PART\r\nDAY\r\nEXTRACT\r\nSTRFTIME\r\nDay\r\nDAYOFMONTH\r\n\r\n\r\n\r\n.Hour\r\nDATEPART HOUR\r\nDATE_PART\r\nHOUR\r\nEXTRACT\r\nSTRFTIME\r\nHour\r\nHOUR\r\n\r\n\r\n\r\n.Minute\r\nDATEPART MINUTE\r\nDATE_PART\r\nMINUTE\r\nEXTRACT\r\nSTRFTIME\r\nMinute\r\nMINUTE\r\n\r\n\r\n\r\n.Second\r\nDATEPART SECOND\r\nDATE_PART\r\nSECOND\r\nEXTRACT\r\nSTRFTIME\r\nSecond\r\nSECOND\r\n\r\n\r\n\r\n.Subtract(y).Days\r\nDATEDIFF\r\ny-x\r\nDATEDIFF\r\ny-x\r\nx-y\r\nDateDiff\r\nDATEDIFF\r\n\r\n\r\n\r\n.Subtract(y).Seconds\r\nTIMESTAMPDIFF\r\nEXTRACT(EPOCH)\r\nTIMESTAMPDIFF\r\ny-x\r\nx-y\r\nDateDiff\r\nDATEDIFF\r\n\r\n\r\n\r\n.AddYears(i)\r\nDATEADD YEAR\r\n\r\nINTERVAL\r\n\r\nDATE_ADD\r\n\r\nINTERVAL\r\n\r\nDATETIME\r\nDateAdd\r\n\r\n\r\n\r\n\r\n.AddMonths(i)\r\nDATEADD MONTH\r\n\r\nINTERVAL\r\n\r\nDATE_ADD\r\n\r\nINTERVAL\r\n\r\nDATETIME\r\nDateAdd\r\n\r\n\r\n\r\n\r\n.AddDays(f)\r\nDATEADD DAY\r\n\r\nINTERVAL\r\n\r\nDATE_ADD\r\n\r\nINTERVAL\r\n\r\nDATETIME\r\nDateAdd\r\n\r\n\r\n\r\n\r\n.AddHours(f)\r\nDATEADD HOUR\r\n\r\nINTERVAL\r\n\r\nDATE_ADD\r\n\r\nINTERVAL\r\n\r\nDATETIME\r\nDateAdd\r\n\r\n\r\n\r\n\r\n.AddMinutes(f)\r\nDATEADD MINUTE\r\n\r\nINTERVAL\r\n\r\nDATE_ADD\r\n\r\nINTERVAL\r\n\r\nDATETIME\r\nDateAdd\r\n\r\n\r\n\r\n\r\n.AddSeconds(f)\r\nDATEADD SECOND\r\n\r\nINTERVAL\r\n\r\nDATE_ADD\r\n\r\nINTERVAL\r\n\r\nDATETIME\r\nDateAdd\r\n\r\n\r\n\r\n\r\n\r\n\r\nAddYears, AddDays and AddMinutes parameter can be either constant or other SQL-column, except in SQLite which supports only constant.\r\nAddMonths, AddHours and AddSeconds supports only constants for now.\r\nOdbc standard doesn\u0027t seem to have a date-add functionality.\r\n.NET has float parameters on some time-functions like AddDays, but SQL may ignore the decimal fraction.\r\nNumerical Functions (e.g. Microsoft.FSharp.Core.Operators)\r\n\r\n\r\n\r\n.NET\r\nMsSqlServer\r\nPostgreSql\r\nMySql\r\nOracle\r\nSQLite\r\nMSAccess\r\nOdbc\r\nNotes\r\n\r\n\r\n\r\n\r\nabs(i)\r\nABS\r\nABS\r\nABS\r\nABS\r\nABS\r\nAbs\r\nABS\r\n\r\n\r\n\r\nceil(i)\r\nCEILING\r\nCEILING\r\nCEILING\r\nCEIL\r\nCAST \u002B 0.5\r\nFix\u002B1\r\nCEILING\r\n\r\n\r\n\r\nfloor(i)\r\nFLOOR\r\nFLOOR\r\nFLOOR\r\nFLOOR\r\nCAST AS INT\r\nInt\r\nFLOOR\r\n\r\n\r\n\r\nround(i)\r\nROUND\r\nROUND\r\nROUND\r\nROUND\r\nROUND\r\nRound\r\nROUND\r\n\r\n\r\n\r\nMath.Round(i,x)\r\nROUND\r\nROUND\r\nROUND\r\nROUND\r\nROUND\r\nRound\r\nROUND\r\n\r\n\r\n\r\ntruncate(i)\r\nTRUNCATE\r\nTRUNC\r\nTRUNCATE\r\nTRUNC\r\n\r\nFix\r\nTRUNCATE\r\n\r\n\r\n\r\nsqrt(i)\r\nSQRT\r\nSQRT\r\nSQRT\r\nSQRT\r\nSQRT\r\nSqr\r\nSQRT\r\n\r\n\r\n\r\nsin(i)\r\nSIN\r\nSIN\r\nSIN\r\nSIN\r\nSIN\r\nSIN\r\nSIN\r\n\r\n\r\n\r\ncos(i)\r\nCOS\r\nCOS\r\nCOS\r\nCOS\r\nCOS\r\nCOS\r\nCOS\r\n\r\n\r\n\r\ntan(i)\r\nTAN\r\nTAN\r\nTAN\r\nTAN\r\nTAN\r\nTAN\r\nTAN\r\n\r\n\r\n\r\nasin(i)\r\nASIN\r\nASIN\r\nASIN\r\nASIN\r\nASIN\r\n\r\nASIN\r\n\r\n\r\n\r\nacos(i)\r\nACOS\r\nACOS\r\nACOS\r\nACOS\r\nACOS\r\n\r\nACOS\r\n\r\n\r\n\r\natan(i)\r\nATAN\r\nATAN\r\nATAN\r\nATAN\r\nATAN\r\nAtn\r\nATAN\r\n\r\n\r\n\r\nMath.Max(x,y)\r\nSELECT(MAX)\r\nGREATEST\r\nGREATEST\r\nGREATEST\r\nMAX\r\niif(x\u0026gt;y,x,y)\r\nGREATEST\r\n\r\n\r\n\r\nMath.Min(x,y)\r\nSELECT(MIN)\r\nLEAST\r\nLEAST\r\nLEAST\r\nMIN\r\niif(x\u0026lt;y,x,y)\r\nLEAST\r\n\r\n\r\n\r\nMath.Pow(x,y)\r\nPOWER(x,y)\r\nPOWER(x,y)\r\nPOWER(x,y)\r\nPOWER(x,y)\r\n\r\nx^y\r\nPOWER(x,y)\r\n\r\n\r\n\r\n(\u002B)\r\n\u002B\r\n\u002B\r\n\u002B\r\n\u002B\r\n\u002B\r\n\u002B\r\n\u002B\r\n\r\n\r\n\r\n(-)\r\n-\r\n-\r\n-\r\n-\r\n-\r\n-\r\n-\r\n\r\n\r\n\r\n(*)\r\n*\r\n*\r\n*\r\n*\r\n*\r\n*\r\n*\r\n\r\n\r\n\r\n(/)\r\n/\r\n/\r\n/\r\n/\r\n/\r\n/\r\n/\r\n\r\n\r\n\r\n(%)\r\n%\r\n%\r\n%\r\n%\r\n%\r\n%\r\n%\r\n\r\n\r\n\r\n\r\n\r\nMicrosoft SQL Server doesn\u0027t have Greatest and Least functions, so that will be done via nested SQL clause: (select max(v) from (values (x), (y)) as value(v))\r\nIt might also not be standard ODBC, but should work e.g. on Amazon Redshift.\r\nCondition operations and others\r\n\r\n\r\n\r\n.NET\r\nMsSqlServer\r\nPostgreSql\r\nMySql\r\nOracle\r\nSQLite\r\nMSAccess\r\nOdbc\r\nNotes\r\n\r\n\r\n\r\n\r\n.ToString()\r\nCAST(NVARCHAR)\r\n::varchar\r\nCAST(CHAR)\r\nCAST(VARCHAR)\r\nCAST(TEXT)\r\nCStr\r\nCONVERT\r\n\r\n\r\n\r\nif x then y else z\r\nCASE WHEN\r\nCASE WHEN\r\nIF(x,y,z)\r\nCASE WHEN\r\nCASE WHEN\r\niif(x,y,z)\r\nCASE WHEN\r\n\r\n\r\n\r\n\r\n\r\nIf the condition is not using SQL columns, it will be parsed before creation of SQL.\r\nIf the condition is containing columns, it will be parsed into SQL.\r\nIf the condition is in the result of projection (the final select clause),\r\nit may be parsed after execution of the SQL, depending on parameter setting selectOperations.\r\nAggregate Functions\r\nAlso you can use these to return an aggregated value, or in a group-by clause:\r\n\r\n\r\n\r\n.NET\r\nMsSqlServer\r\nPostgreSql\r\nMySql\r\nOracle\r\nSQLite\r\nMSAccess\r\nOdbc\r\nNotes\r\n\r\n\r\n\r\n\r\ncount\r\nCOUNT\r\nCOUNT\r\nCOUNT\r\nCOUNT\r\nCOUNT\r\nCOUNT\r\nCOUNT\r\n\r\n\r\n\r\nsum\r\nSUM\r\nSUM\r\nSUM\r\nSUM\r\nSUM\r\nSUM\r\nSUM\r\n\r\n\r\n\r\nmin\r\nMIN\r\nMIN\r\nMIN\r\nMIN\r\nMIN\r\nMIN\r\nMIN\r\n\r\n\r\n\r\nmax\r\nMAX\r\nMAX\r\nMAX\r\nMAX\r\nMAX\r\nMAX\r\nMAX\r\n\r\n\r\n\r\naverage\r\nAVG\r\nAVG\r\nAVG\r\nAVG\r\nAVG\r\nAVG\r\nAVG\r\n\r\n\r\n\r\nStdDev\r\nSTDEV\r\nSTDDEV\r\nSTDDEV\r\nSTDDEV\r\n\r\nSTDEV\r\nSTDEV\r\n\r\n\r\n\r\nVariance\r\nVAR\r\nVARIANCE\r\nVARIANCE\r\nVARIANCE\r\n\r\nDVAR\r\nVAR\r\n\r\n\r\n\r\n\r\n\r\nStdDev, Variance are located in FSharp.Data.Sql.Operators namespace and also Seq.stdDevAsync and Seq.varianceAsync.\r\nOthers can be used from List, Seq and Array modules, or Seq.countAsync, Seq.sumAsync, Seq.minAsync, Seq.maxAsync, Seq.averageAsync.\r\nMore details\r\nBy default query { ... } is IQueryable\u0026lt;T\u0026gt; which is lazy. To execute the query you have to do Seq.toList, Seq.toArray, or some corresponding operation. If you don\u0027t do that but just continue inside another query { ... } or use System.Linq .Where(...) etc, that will still be combined to the same SQL-query.\r\nThere are some limitation of complexity of your queries, but for example\r\nthis is still ok and will give you very simple select-clause:\r\nlet randomBoolean = \r\n let r = System.Random()\r\n fun () -\u0026gt; r.NextDouble() \u0026gt; 0.5\r\nlet c1 = randomBoolean()\r\nlet c2 = randomBoolean()\r\nlet c3 = randomBoolean()\r\n\r\nlet sample =\r\n query {\r\n for order in ctx.Main.Orders do\r\n where ((c1 || order.Freight \u0026gt; 0m) \u0026amp;\u0026amp; c2)\r\n let x = \u0026quot;Region: \u0026quot; \u002B order.ShipAddress\r\n select (x, if c3 then order.ShipCountry else order.ShipRegion)\r\n } |\u0026gt; Seq.toArray\r\n\r\nIt can be for example (but it can also leave [Freight]-condition away and select ShipRegion instead of ShipAddress, depending on your randon values):\r\n SELECT \r\n [_arg2].[ShipAddress] as \u0027ShipAddress\u0027,\r\n [_arg2].[ShipCountry] as \u0027ShipCountry\u0027 \r\n FROM main.Orders as [_arg2] \r\n WHERE (([_arg2].[Freight]\u0026gt; @param1)) \r\n\r\nExpressions\r\nThese operators perform no specific function in the code itself, rather they\r\nare placeholders replaced by their database-specific server-side operations.\r\nTheir utility is in forcing the compiler to check against the correct types.\r\nlet bergs = ctx.Main.Customers.Individuals.BERGS\r\n\r\nOperators\r\nYou can find some custom operators using FSharp.Data.Sql:\r\n\r\n|=| (In set)\r\n|\u0026lt;\u0026gt;| (Not in set)\r\n=% (Like)\r\n\u0026lt;\u0026gt;% (Not like)\r\n!! (Left join)\r\n\r\nBest practices working with queries\r\nWhen using Option types, check IsSome in where-clauses.\r\nYou may want to use F# Option to represent database null, with SQLProvider\r\nstatic constructor parameter UseOptionTypes = true.\r\nDatabase null-checking is done with x IS NULL.\r\nWith option types, easiest way to do that is to check IsSome and IsNone:\r\nlet result =\r\n query {\r\n for order in ctx.Main.Orders do\r\n where (\r\n order.ShippedDate.IsSome \u0026amp;\u0026amp; \r\n order.ShippedDate.Value.Year = 2015)\r\n select (order.OrderId, order.Freight)\r\n } |\u0026gt; Array.executeQueryAsync\r\n\r\nUsing booleans and simple variables (from outside a scope) in where-clauses\r\nThis is how you make your code easier to read when you have multiple code paths.\r\nSQLProvider will optimize the SQL-clause before sending it to the database,\r\nso it will still be simple.\r\nConsider how clean is this source-code compared to other with similar logic:\r\nopen System.Linq\r\nlet getOrders(futureOrders:bool, shipYears:int list) =\r\n\r\n let today = DateTime.UtcNow.Date\r\n let pastOrders = not futureOrders\r\n let noYearFilter = shipYears.IsEmpty\r\n\r\n let result =\r\n query {\r\n for order in ctx.Main.Orders do\r\n where ( \r\n (noYearFilter || shipYears.Contains(order.ShippedDate.Year))\r\n \u0026amp;\u0026amp;\r\n ((futureOrders \u0026amp;\u0026amp; order.OrderDate \u0026gt; today) ||\r\n (pastOrders \u0026amp;\u0026amp; order.OrderDate \u0026lt;= today))\r\n ) \r\n select (order.OrderId, order.Freight)\r\n } |\u0026gt; Array.executeQueryAsync\r\n result\r\n\r\n\r\n Technical details\r\nThis is what happens behind the scenes:\r\n\r\nThe F# query syntax is LINQ Abstract Syntax Tree (AST), and SQLProvider does process those on querying.\r\n\r\n\r\nDon\u0027t select all the fields if you don\u0027t need them\r\nIn general you should select only columns you need\r\nand not a whole object if you don\u0027t update its fields.\r\n// Select all the fields from a table, basically:\r\n// SELECT TOP 1 Address, City, CompanyName, \r\n// ContactName, ContactTitle, Country, \r\n// CustomerID, Fax, Phone, PostalCode, \r\n// Region FROM main.Customers\r\nlet selectFullObject =\r\n query {\r\n for customer in ctx.Main.Customers do\r\n select customer\r\n } |\u0026gt; Seq.tryHeadAsync\r\n\r\n// Select only two fields, basically:\r\n// SELECT TOP 1 Address, City FROM main.Customers\r\nlet selectSmallObject =\r\n query {\r\n for customer in ctx.Main.Customers do\r\n select (customer.Address, customer.City)\r\n } |\u0026gt; Seq.tryHeadAsync\r\n\r\nIf you still want the whole objects and return those to a client\r\nas untyped records, you can use ColumnValues |\u0026gt; Map.ofSeq:\r\nlet someQuery =\r\n query {\r\n for customer in ctx.Main.Customers do\r\n //where(...)\r\n select customer\r\n } |\u0026gt; Seq.toArray\r\n\r\nsomeQuery |\u0026gt; Array.map(fun c -\u0026gt; c.ColumnValues |\u0026gt; Map.ofSeq)\r\n\r\nF# Map values are accessed like this: myItem.[\u0022City\u0022]\r\nUsing code logic in select-clause\r\nDon\u0027t be scared to insert non-Sql syntax to select-clauses.\r\nThey will be parsed business-logic side!\r\nlet fetchOrders customerZone =\r\n let currentDate = DateTime.UtcNow.Date\r\n query {\r\n for order in ctx.Main.Orders do\r\n // where(...)\r\n select {\r\n OrderId = order.OrderId\r\n Timezone = \r\n parseTimezoneFunction(order.ShipRegion, order.ShippedDate, customerZone);\r\n Status = \r\n if order.ShippedDate \u0026gt; currentDate then \u0026quot;Shipped\u0026quot;\r\n elif order.OrderDate \u0026gt; currentDate then \u0026quot;Ordered\u0026quot;\r\n elif order.RequiredDate \u0026gt; currentDate then \u0026quot;Late\u0026quot;\r\n else \u0026quot;Waiting\u0026quot;\r\n OrderRows = [||];\r\n }\r\n } |\u0026gt; Seq.toArray\r\n\r\nYou can\u0027t have a let inside a select, but you can have custom function calls like\r\nparseTimezoneFunction here. Just be careful, they are executed for each result item separately.\r\nSo if you want also SQL to execute there, it\u0027s rather better to do a separate function taking\r\na collection as parameter. See below.\r\nUsing one sub-query to populate items\r\nSometimes you want to fetch efficiently sub-items, like\r\n\u0022Give me all orders with their order-rows\u0022\r\nIn the previous example we fetched OrderRows as empty array.\r\nNow we populate those with one query in immutable way:\r\nlet orders = fetchOrders 123\r\n\r\nlet orderIds = \r\n orders \r\n |\u0026gt; Array.map(fun o -\u0026gt; o.OrderId) \r\n |\u0026gt; Array.distinct\r\n \r\n// Fetch all rows with one query\r\nlet subItems =\r\n query {\r\n for row in ctx.Main.OrderDetails do\r\n where (orderIds.Contains(row.OrderId))\r\n select (row.OrderId, row.ProductId, row.Quantity)\r\n } |\u0026gt; Seq.toArray\r\n \r\nlet ordersWithDetails =\r\n orders \r\n |\u0026gt; Array.map(fun order -\u0026gt;\r\n {order with \r\n // Match the corresponding sub items\r\n // to a parent item\u0026#39;s colleciton:\r\n OrderRows = \r\n subItems \r\n |\u0026gt; Array.filter(fun (orderId,_,_) -\u0026gt; \r\n order.OrderId = orderId)\r\n })\r\n\r\nHow to deal with large IN-queries?\r\nThe pervious query had orderIds.Contains(row.OrderId).\r\nWhich is fine if your collection has 50 items but what if there are 5000 orderIds?\r\nSQL-IN will fail. You have two easy options to deal with that.\r\nChunk your collection:\r\nF# has built-in chunkBySize function!\r\nlet chunked = orderIds |\u0026gt; Array.chunkBySize 100\r\n\r\nfor chunk in chunked do\r\n let all =\r\n query {\r\n for row in ctx.Main.OrderDetails do\r\n where (chunk.Contains(row.OrderId))\r\n select (row)\r\n } |\u0026gt; Seq.toArray\r\n\r\n all |\u0026gt; Array.iter(fun row -\u0026gt; row.Discount \u0026lt;- 0.1)\r\n ctx.SubmitUpdates()\r\n\r\nCreating a nested query\r\nBy leaving the last |\u0026gt; Seq.toArray away from your main query you create a lazy\r\nIQueryable\u0026lt;...\u0026gt;-query. Which means your IN-objects are not fetched from\r\nthe database, but is actually a nested query.\r\nlet nestedOrders =\r\n query {\r\n for order in ctx.Main.Orders do\r\n // where(...)\r\n select (order.OrderId)\r\n } \r\n\r\nlet subItemsAll =\r\n query {\r\n for row in ctx.Main.OrderDetails do\r\n where (nestedOrders.Contains(row.OrderId))\r\n select (row.OrderId, row.ProductId, row.Quantity)\r\n } |\u0026gt; Seq.toArray\r\n\r\n// similar as previous fetchOrders\r\nlet fetchOrders2 customerZone =\r\n let currentDate = DateTime.UtcNow.Date\r\n query {\r\n for order in ctx.Main.Orders do\r\n // where(...)\r\n select {\r\n OrderId = order.OrderId\r\n Timezone = \r\n parseTimezoneFunction(order.ShipRegion, order.ShippedDate, customerZone);\r\n Status = \r\n if order.ShippedDate \u0026gt; currentDate then \u0026quot;Shipped\u0026quot;\r\n elif order.OrderDate \u0026gt; currentDate then \u0026quot;Ordered\u0026quot;\r\n elif order.RequiredDate \u0026gt; currentDate then \u0026quot;Late\u0026quot;\r\n else \u0026quot;Waiting\u0026quot;\r\n OrderRows = \r\n subItemsAll |\u0026gt; (Array.filter(fun (orderId,_,_) -\u0026gt; \r\n order.OrderId = orderId));\r\n }\r\n } |\u0026gt; Seq.toArray\r\n\r\nThat way order hit count doesn\u0027t matter as the database is taking care of it.\r\nGroup-by and more complex query scenarios\r\nOne problem with SQLProvider is that monitorin the SQL-clause performance hitting to\r\ndatabase indexes is hard to track. So the best way to handle complex SQL\r\nis to create a database view and query that from SQLProvider.\r\nStill, if you want to use LINQ groupBy, this is how it\u0027s done:\r\nlet freightsByCity =\r\n query {\r\n for o in ctx.Main.Orders do\r\n //where (...)\r\n groupBy o.ShipCity into cites\r\n select (cites.Key, cites.Sum(fun order -\u0026gt; order.Freight))\r\n } |\u0026gt; Array.executeQueryAsync\r\n\r\nGroup-by is support is limited, mostly for single tables only.\r\nF# Linq query syntax doesnt support doing select count(1), sum(UnitPrice) from Products\r\nbut you can group by a constant to get that:\r\nlet qry = \r\n query {\r\n for p in ctx.Main.Products do\r\n groupBy 1 into g\r\n select (g.Count(), g.Sum(fun p -\u0026gt; p.UnitPrice))\r\n } |\u0026gt; Seq.head\r\n\r\nFor more info see:\r\n\r\nComposable Query\r\nMapping to record types\r\nCRUD operations\r\nSample queries\r\n\r\n","headings":["How to see the SQL-clause?","Querying","SELECT -clause operations","SelectOperations.DotNetSide (Default)","SelectOperations.DatabaseSide","Supported Query Expression Keywords","Canonical Functions",".NET String Functions (.NET)",".NET DateTime Functions","Numerical Functions (e.g. Microsoft.FSharp.Core.Operators)","Condition operations and others","Aggregate Functions","More details","Expressions","Operators","Best practices working with queries","When using Option types, check IsSome in where-clauses.","Using booleans and simple variables (from outside a scope) in where-clauses","Don\u0027t select all the fields if you don\u0027t need them","Using code logic in select-clause","Using one sub-query to populate items","How to deal with large IN-queries?","Chunk your collection:","Creating a nested query","Group-by and more complex query scenarios"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/sqlite.html","title":"SQLite Provider\r\n","content":"SQLite Provider\r\nParameters\r\nConnectionString\r\nBasic connection string used to connect to the SQLite database.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet connectionString = \r\n \u0026quot;Data Source=\u0026quot; \u002B \r\n __SOURCE_DIRECTORY__ \u002B @\u0026quot;/../../../tests/SqlProvider.Tests/scripts/northwindEF.db;\u0026quot; \u002B \r\n \u0026quot;Version=3;foreign keys=true\u0026quot;\r\n\r\nResolutionPath\r\nPath to search for database vendor speficic assemblies. Specify the path where System.Data.SQLite.dll is stored.\r\nIf you use the System.Data.SQLite NuGet package and target .NET 4.6, the path would be something like\r\n__SOURCE_DIRECTORY__ \u002B @\u0022\\..\\packages\\System.Data.SQLite.Core.\u0026lt;version\u0026gt;\\lib\\net46\u0022.\r\nBoth absolute and relative paths are supported.\r\nNote that System.Data.SQLite.dll will look for the native interop library:\r\n\r\non Windows: SQLite.Interop.dll in the x64 and x86 subdirectories of the resolution path.\r\non Linux: libSQLite.Interop.so in the resolution path directory.\r\n\r\nThe interop libraries are not properly placed afer the System.Data.SQLite NuGet package is added, so you might have to\r\nmanually copy the interop libraries:\r\n\r\n\r\non Windows: copy x64 and x86 subdirectories from SQLite build directory, which typically is \r\n\u0026lt;project root\u0026gt;\\packages\\System.Data.SQLite.Core.\u0026lt;version\u0026gt;\\build\\net46.\r\n\r\non Linux: first build the libSQLite.Interop.so using \u0026lt;srcDir\u0026gt;/Setup/compile-interop-assembly-release.sh script from System.Data.SQLite source distribution sqlite-netFx-source-1.x.xxx.x.zip. And then copy it from \u0026lt;srcDir\u0026gt;/bin/2013/Release/bin/.\r\n\r\nIf System.Data.SQLite.dll is in the location where NuGet places it by default, you don\u0027t have to submit\r\nthe ResolutionPath parameter at all, but you still need to copy the interop libraries as described above.\r\nIf you use Microsoft.Data.Sqlite driver, you still need the physical dll, (in that case e_sqlite3.dll), to be in resolutionPath or folder under operating system PATH variable.\r\n[\u0026lt;Literal\u0026gt;]\r\nlet resolutionPath = __SOURCE_DIRECTORY__ \u002B @\u0026quot;/../../../tests/SqlProvider.Tests/libs\u0026quot;\r\n\r\nSQLiteLibrary\r\nSpecifies what SQLite library to use. This is an SQLiteLibrary enumeration, defined in the FSharp.Data.Sql.Common\r\nnamespace, which has the following members:\r\n\r\n*AutoSelect* - Uses System.Data.SQLite under .NET, Mono.Data.SQLite under Mono and Microsoft.Data.Sqlite under NET Core. This is the default.\r\n*MonoDataSQLite* - Always uses Mono.Data.SQLite.\r\n*SystemDataSQLite* - Always uses System.Data.SQLite.\r\n*MicrosoftDataSqlite* - Always uses Microsoft.Data.Sqlite. This is experimental until it supports GetSchema().\r\n\r\nExample\r\ntype sql = SqlDataProvider\u0026lt;\r\n Common.DatabaseProviderTypes.SQLITE, \r\n SQLiteLibrary = Common.SQLiteLibrary.SystemDataSQLite,\r\n ConnectionString = connectionString, \r\n ResolutionPath = resolutionPath, \r\n CaseSensitivityChange = Common.CaseSensitivityChange.ORIGINAL\u0026gt;\r\n\r\nlet ctx = sql.GetDataContext()\r\n\r\nlet customers = \r\n ctx.Main.Customers\r\n |\u0026gt; Seq.map(fun c -\u0026gt; c.ContactName)\r\n |\u0026gt; Seq.toList\r\n\r\nCRUD\r\nWhen you do insert operation, after .SubmitUpdates call you can get inserted rowid like this:\r\nlet myCustomer = ctx.Main.Customers.\u0060\u0060Create(CompanyName)\u0060\u0060(\u0026quot;MyCompany\u0026quot;)\r\nctx.SubmitUpdates()\r\nlet rowid = myCustomer.GetColumn(\u0026quot;rowid\u0026quot;) : int\r\n\r\n","headings":["SQLite Provider","Parameters","ConnectionString","ResolutionPath","SQLiteLibrary","Example","CRUD"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/techdetails.html","title":"techdetails","content":"Version control instructions\r\nGit information is in a separate document.\r\nThe environment\r\nDatabases that you should need for development:\r\n\r\nDemo-data database scripts are at: /src/DatabaseScripts/\r\nAccess database is at: /docs/files/msaccess/Northwind.MDB\r\nSQLite database is at: /tests/SqlProvider.Tests/db/northwindEF.db\r\n\r\nEven though our test run will run modifications to the test databases, don\u0027t check in these *.mdb and *.db files with your commit, to avoid bad merge-cases.\r\nSolution structure\r\nWe use Fake and Paket. You have to run build.cmd on Windows (or sh ./build.sh on Mac/Linux) before opening the solutions.\r\nThe main source solution is SQLProvider.sln.\r\nThe unit tests are located in another one, SQLProvider.Tests.sln, and when you open the solution, it will lock the bin\\net472\\FSharp.Data.SqlProvider.dll, and after that you can\u0027t build the main solution.\r\n\r\nTo debug design-time features you \u0022Attach to process\u0022 the main solution debugger to another instance of Visual Studio running the tests solution.\r\nTo debug runtime you attach it to e.g. fsi.exe and run the code in interactive.\r\n\r\nWorkarounds for \u0022file in use\u0022 (issue #172)\r\n\r\nDebugging execution: Have all the test-files closed in your test-project when you open it with VS. Then you can run tests from the tests from Tests Explorer window (and even debug them if you open the files to that instance of VS from src\\SqlProvider).\r\nOr you can open tests with some other editor than Visual Studio 2015\r\n\r\nReferenced Files\r\n\r\nDocumentation is located at SQLProvider/docs/content/core and it\u0027s converted directly to *.html help files by the build-script.\r\nsrc/ProvidedTypes.fsi, src/ProvidedTypes.fs and src/Code/ExpressionOptimizer.fs are coming from other repositoried restored by first build. Location is at packet.dependencies. Don\u0027t edit them manually.\r\n\r\nTest cases\r\nThere are database specific test files as scripts in the test solution, /tests/SqlProvider.Tests/scripts/, but also one generic /tests/SqlProvider.Tests/QueryTests.fs which is running all the SQLite tests in the build script.\r\nHigh level description of the provider\r\nContext and design time\r\nYou have a source code like:\r\ntype sql = SqlDataProvider\u0026lt;...params...\u0026gt;\r\nlet dc = sql.GetDataContext()\r\n\r\nWhat will first happen in the design-time, is that this will call createTypes of SqlDesignTime.fs and create (as lazily as possible) the database schema types (the shape of the database). These methods are added to the sql.datacontext and are stored to concurrent dictionaries. Visual Studio will do a lot of background processing so thread-safety is important here.\r\nGetDataContext() will return a dynamic class called dataContext which will on design-time call class SqlDataContext in file SqlRuntime.DataContext.fs through interface ISqlDataContext. SqlDataContext uses ProviderBuilder to create database specific providers, fairly well documented ISqlProvider in file SqlRuntime.Common.fs.\r\nQuerying\r\nThe entity-items themselves are rows in the database data and they are modelled as dynamic sub-classes of SqlEntity, base-class in file SqlRuntime.Common.fs which can be basically think of as wrapper for Dictionary\u0026lt;string,obj\u0026gt; (a column name, and the value). SqlEntity is used for all-kind of result-data actually, so the data columns may not correspond to the actual data values. Mostly the results of the data are shaped as SqlQueryable\u0026lt;SqlEntity\u0026gt;, or SqlQueryable\u0026lt;\u0027T\u0026gt; which is a SQLProvider\u0027s class for IQueryable\u0026lt;\u0027T\u0026gt; items.\r\nquery {\r\n for cust in dbc.Main.Customers do\r\n where (\u0026quot;ALFKI\u0026quot; = cust.CustomerId)\r\n select cust\r\n} |\u0026gt; Seq.toArray\r\n\r\nThis query is translated to a LINQ-expression-tree through Microsoft.FSharp.Linq.QueryFSharpBuilder. That will call IQueryable\u0026lt;\u0027T\u0026gt;\u0027s member Provider to execute two things for the LINQ-expression-tree: first CreateQuery and later Execute.\r\nParsing the LINQ-expression-tree\r\nCreateQuery will hit our SqlQueryable\u0026lt;...\u0026gt;\u0027s Provider (IQueryProvider) property. LINQ-expression-trees can be kind of recursive type structures, so we it will call CreateQuery for each linq-method. We get the expression-tree as parameter, and parse that with (multi-layer-) active patterns.\r\nOur example the LINQ-expression tree is:\r\n.Call System.Linq.Queryable.Where(\r\n .Constant\u0026lt;System.Linq.IQueryable\u00601[SqlEntity]\u0026gt;(SqlQueryable\u00601[SqlEntity]),\r\n \u0027(.Lambda #Lambda1\u0026lt;System.Func\u00602[SqlEntity,Boolean]\u0026gt;))\r\n.Lambda #Lambda1\u0026lt;System.Func\u00602[SqlEntity,Boolean]\u0026gt;(SqlEntity $cust) {\r\n .Call $cust.GetColumn(\u0022CustomerID\u0022) == \u0022ALFKI\u0022\r\n}\r\n\r\nso it would hit this in SqlRuntime.Linq.fs:\r\n| MethodCall(None, (MethodWithName \u0026quot;Where\u0026quot; as meth), [ SourceWithQueryData source; OptionalQuote qual ]) -\u0026gt;\r\n\r\nbecause the LINQ-expression-tree has ExpressionType.Call named \u0022Where\u0022 with source of IWithSqlService (which is the SqlQueryable).\r\nWhat happens then is parsing of the Where-query. Where-queries are nested structures having known conditions (modelled with pattern Condition). If the conditions are having SqlColumnGets, a pattern that says that it\u0027s SqlEntity with method GetColumn, we know that it has to be part of SQL-clause.\r\nWe collect all the known patterns to IWithSqlServices field SqlExpression, being a type SqlExp, our non-complete known recursive model-tree of SQL clauses.\r\n\r\nExecution of the query\r\nEventually there also comes the call executeQuery (or executeQueryScalar for SQL-queries that will return a single value like count), either by enumeration of our IQueryable or at the end of LINQ-expression-tree. That will call QueryExpressionTransformer.convertExpression. What happens there (in\r\nSqlRuntime.Linq.fs):\r\n\r\nWe create a projection-lambda. This is described in detail below.\r\nWe convert our SqlExp to real SQL-clause with QueryExpressionTransformer.convertExpression calling provider\u0027s GenerateQueryText-method. Each provider may have some differences in their SQL-syntax.\r\nWe gather the results as IEnumerable\u0026lt;SqlEntity\u0026gt; (or a single return value like count).\r\nWe execute the projection-lambda to the results.\r\n\r\nIn our example the whole cust object was selected.\r\nFor security reasons we don\u0027t do SELECT * but we actually list the columns that are there at compile time.\r\nThe TupleIndex of IWithSqlService is a way to collect joined tables to match the sql-aliasses, here the [cust].\r\nSELECT [cust].[Address] as \u0027Address\u0027, \r\n [cust].[City] as \u0027City\u0027,\r\n [cust].[CompanyName] as \u0027CompanyName\u0027,\r\n [cust].[ContactName] as \u0027ContactName\u0027,\r\n [cust].[ContactTitle] as \u0027ContactTitle\u0027,\r\n [cust].[Country] as \u0027Country\u0027,\r\n [cust].[CustomerID] as \u0027CustomerID\u0027,\r\n [cust].[Fax] as \u0027Fax\u0027,\r\n [cust].[Phone] as \u0027Phone\u0027,\r\n [cust].[PostalCode] as \u0027PostalCode\u0027,\r\n [cust].[Region] as \u0027Region\u0027 \r\nFROM main.Customers as [cust] \r\nWHERE (([cust].[CustomerID]= @param1))\r\n\r\n-- params @param1 - \u0022ALFKI\u0022;\r\n\r\nProjection-lambda\r\nNow, if the select-clause would have been complex:\r\nquery {\r\n for emp in dc.Main.Employees do\r\n select (emp.BirthDate.DayOfYear \u002B 3)\r\n} |\u0026gt; Seq.toArray\r\n\r\nWe don\u0027t know the function of DayOfYear for each different SQL-providers (Oracle/MSSQL/Odbc/...), but we still want tihs code to work. The LINQ-expression-tree for this query is:\r\n.Call System.Linq.Queryable.Select(\r\n .Constant\u0026lt;System.Linq.IQueryable\u00601[SqlEntity]\u0026gt;(SqlQueryable\u00601[SqlEntity]),\r\n \u0027(.Lambda #Lambda1\u0026lt;System.Func\u00602[SqlEntity,Int32]\u0026gt;))\r\n.Lambda #Lambda1\u0026lt;System.Func\u00602[SqlEntity,System.Int32]\u0026gt;(SqlEntity $emp) {\r\n (.Call $emp.GetColumn(\u0022BirthDate\u0022)).DayOfYear \u002B 3\r\n}\r\n\r\nWhat happens now, is that in SqlRuntime.QueryExpression.fs we parse the whole LINQ-expression-tree, and find the parts that we do know to belong to SQL:\r\nthe SqlEntity\u0027s emp.GetColumn(\u0022BirthDate\u0022), and create a lambda-expression where this is replaced with a parameter:\r\nfun empBirthDate -\u0026gt; empBirthDate.DayOfYear \u002B 3\r\n\r\nNow when we get the empBirthDate from the SQL result, we can execute this lambda for the parameter, in .NET-side, not SQL, and then we get the correct result. This is done with for e in results -\u0026gt; projector.DynamicInvoke(e) in SqlRuntime.Linq.fs.\r\nHow to debug SQLProvider in your own solution, not the test-project\r\nThe runtime debugging can be done just like any other:\r\n\r\nBuild your own project\r\nThen just build SQLProvider.sln and then go to bin-folder, select your framework, and copy FSharp.Data.SqlProvider.dll and FSharp.Data.SqlProvider.pdb\r\nAnd then replace your own project\u0027s bin-folder copies of these 2 files, run your software without rebuild.\r\n\r\nDebugging the design-time VS2022 is doable, but a bit more complex.\r\nThis will mess your SQLProvider Nuget cache, so after done, delete the SQLProvider cache-folder and restore the package again.\r\n\r\nOpen SQLProvider.sln (with Visual Studio 2022) and build it (in debug mode). Keep this open for now.\r\nOpen explorer, it has made under bin-folder some folders, e.g. \\net472 \\net6.0 \\netstandard2.0 \\netstandard2.1 and \\typeproviders\r\nOpen another explorer, go to your location of Nuget cache, the version you are using e.g. C:\\Users\\me\\.nuget\\packages\\sqlprovider\\1.3.30\r\nReplace the nuget cache \\typeproviders folder with your fresh bin typeproviders folder.\r\nReplace the nuget cache \\lib folder with other folders from your fresh bin folder.\r\nOpen another instance of VS2022 to the start-screen but don\u0027t open any project yet.\r\nGo back to your first instance of VS2022 with SQLProvider.sln. Add some breakpoints. Select from the top menu: Debug - Attach to Process...\r\nSelect devenv.exe which is the another VS2022 instance.\r\nSwitch to this new instance and load your own project that uses SQLProvider and it\u0027ll stop to the breakpoints.\r\n\r\nOther things to know\r\n\r\nSQLProvider also runs ExpressionOptimizer functions to simplify the LINQ-expression-trees\r\n\r\nIf you do IN-query (LINQ-Contains) to IEnumerable, it\u0027s as normal IN-query, but if the source collection is SqlQueryable, then the query is serialized as a nested query, where we have to check that the parameter names won\u0027t collide (i.e. param1 can be used only once).\r\nThis documentation was written on 2017-04-11.\r\n\r\n\r\n","headings":["Version control instructions","The environment","Solution structure","Workarounds for \u0022file in use\u0022 (issue #172)","Referenced Files","Test cases","High level description of the provider","Context and design time","Querying","Parsing the LINQ-expression-tree","Execution of the query","Projection-lambda","How to debug SQLProvider in your own solution, not the test-project","Other things to know"],"type":"content"},{"uri":"https://fsprojects.github.io/SQLProvider/core/unittest.html","title":"SQLProvider allows you to unit-test your SQL-logic\r\n","content":"SQLProvider allows you to unit-test your SQL-logic\r\nThat\u0027s a clear advantage on large-scale projects, where there are multiple developers and\r\nthe SQL-queries grow more complex over time.\r\n\r\nDebugging. Faster to debug unit-test than spin the full environment again and again.\r\nRefactoring: To ensure what the original functionality is actually doing before you modify.\r\n\r\nWhy to unit-test?\r\nF# strong typing provides safety over raw SQL: Instead of your customer finding an issue, your code will not compile if the database shape is wrong,\r\nfor example someone removed an important column.\r\nSQLProvider does parametrized SQL, you can watch the executed SQL, and you can even open the parameterized SQL parameters for easier debugging:\r\nFSharp.Data.Sql.Common.QueryEvents.SqlQueryEvent \r\n|\u0026gt; Event.add (fun e -\u0026gt; System.Console.WriteLine (e.ToRawSqlWithParamInfo()))\r\n\r\nBut unit-testing is good addition in scenarios where:\r\n\r\nYour database is very dynamic, and data is changing all the time\r\nYou want to ensure the logic working over period of time\r\nYou have a big project where build-time takes long\r\nYou want Continuous Integration, but your test-data or database is not stable.\r\n\r\nHow?\r\nThere are 2 helper functions to mock the database connection:\r\n\r\nFSharp.Data.Sql.Common.OfflineTools.CreateMockEntities\u0026lt;\u0027T\u0026gt; - With this you can mock a single table.\r\nFSharp.Data.Sql.Common.OfflineTools.CreateMockSqlDataContext\u0026lt;\u0027T\u0026gt; - With this you can mock a context with multiple tables\r\n\r\nYou just feed an anonymous records like they would be database rows.\r\nYou don\u0027t need to add all the columns, just the ones you use in your query.\r\nBut you can add extra-columns for easier asserts.\r\nExample, executable business logic\r\nopen System\r\n\r\ntype OrderDateFilter =\r\n| OrderDate\r\n| ShippedDate\r\n| Either\r\n\r\nlet someProductionFunction (ctx:sql.dataContext) (orderType:OrderDateFilter) (untilDate:System.DateTime) =\r\n task {\r\n let ignoreOrderDate, ignoreShippedDate =\r\n match orderType with\r\n | OrderDate -\u0026gt; false, true\r\n | ShippedDate -\u0026gt; true, false\r\n | Either -\u0026gt; false, false\r\n\r\n let tomorrow = untilDate.AddDays(1.).Date\r\n let someLegacyCondition = 0 // we don\u0026#39;t need this anymore\r\n\r\n let itms = \r\n query {\r\n for order in ctx.Main.Orders do\r\n join cust in ctx.Main.Customers on (order.CustomerId = cust.CustomerId)\r\n where ((cust.City = \u0026quot;London\u0026quot; || cust.City = \u0026quot;Paris\u0026quot; ) \u0026amp;\u0026amp; (\r\n (ignoreOrderDate || order.OrderDate \u0026lt; tomorrow) \u0026amp;\u0026amp; (someLegacyCondition \u0026lt; 15)) \u0026amp;\u0026amp;\r\n (ignoreShippedDate || order.ShippedDate \u0026lt; tomorrow) \u0026amp;\u0026amp;\r\n cust.CustomerId \u0026lt;\u0026gt; null \u0026amp;\u0026amp; order.Freight \u0026gt; 10m \r\n )\r\n select (cust.PostalCode, order.Freight)\r\n }\r\n let! res = itms |\u0026gt; Array.executeQueryAsync\r\n\r\n //maybe some post-processing here...\r\n return res\r\n }\r\n\r\nExample, unit-test part\r\nNote: CustomerID, not CustomerId. These are DB-field-names, not nice LINQ names.\r\nlet \u0060\u0060mock for unit-testing: datacontext\u0060\u0060() =\r\n task {\r\n let sampleDataMap =\r\n [ \u0026quot;main.Customers\u0026quot;,\r\n [| {| CustomerID = \u0026quot;1\u0026quot;; City = \u0026quot;Paris\u0026quot;; PostalCode = \u0026quot;75000\u0026quot;; Description = \u0026quot;This is good\u0026quot;; |} \r\n {| CustomerID = \u0026quot;2\u0026quot;; City = \u0026quot;London\u0026quot;; PostalCode = \u0026quot;E143AB\u0026quot;; Description = \u0026quot;This is good\u0026quot;; |}\r\n {| CustomerID = \u0026quot;3\u0026quot;; City = \u0026quot;Espoo\u0026quot;; PostalCode = \u0026quot;02600\u0026quot;; Description = \u0026quot;Ignore this guy\u0026quot;; |}\r\n |] :\u0026gt; obj\r\n \u0026quot;main.Orders\u0026quot;,\r\n [| {| CustomerID = \u0026quot;1\u0026quot;; OrderDate = DateTime(2020,01,01); ShippedDate = DateTime(2020,01,04); Freight = 4m;|}\r\n {| CustomerID = \u0026quot;1\u0026quot;; OrderDate = DateTime(2021,02,11); ShippedDate = DateTime(2021,02,12); Freight = 22m;|}\r\n {| CustomerID = \u0026quot;2\u0026quot;; OrderDate = DateTime(2022,03,15); ShippedDate = DateTime(2022,03,22); Freight = 20m;|}\r\n {| CustomerID = \u0026quot;2\u0026quot;; OrderDate = DateTime(2024,02,03); ShippedDate = DateTime(2024,02,17); Freight = 50m;|}\r\n {| CustomerID = \u0026quot;3\u0026quot;; OrderDate = DateTime(2024,02,03); ShippedDate = DateTime(2024,02,17); Freight = 15m;|}\r\n |] :\u0026gt; obj\r\n\r\n ] |\u0026gt; Map.ofList\r\n let mockContext = FSharp.Data.Sql.Common.OfflineTools.CreateMockSqlDataContext\u0026lt;sql.dataContext\u0026gt; sampleDataMap\r\n\r\n let! res = someProductionFunction mockContext OrderDateFilter.OrderDate (DateTime(2024,02,04))\r\n //val res: (string * decimal) list =\r\n // [(\u0026quot;75000\u0026quot;, 22M); (\u0026quot;E143AB\u0026quot;, 20M); (\u0026quot;E143AB\u0026quot;, 50M)] \r\n\r\n assert_equal 3 res.Length\r\n assert_contains (\u0026quot;75000\u0026quot;, 22M) res\r\n assert_contains (\u0026quot;E143AB\u0026quot;, 20M) res\r\n assert_contains (\u0026quot;E143AB\u0026quot;, 50M) res\r\n }\r\n\r\nCreateMockSqlDataContext takes a Map\u0026lt;string,obj\u0026gt; where the string is the table name as in database, and obj is an array of anonymous records.\r\nThe mock is meant to help creating data-context objects to enable easier testing of your LINQ-logic, not to test SQLProvider itself.\r\nThere are some limitations with the SQLProvider mock a DB-context:\r\n\r\nThe mock-context will not connect the DB, and you can\u0027t save entity modifications. SubmitUpdates() will do nothing.\r\nSQLProvider custom operators (like x |=| xs and y %\u0026lt;\u0026gt; \u0022A%\u0022) are not supported. So you have to use LINQ-ones (e.g. xs.Contains x and not y.StartsWith \u0022A\u0022) that do work in SQLProvider as well.\r\nYou can call database-table .Create methods to create new instances (it doesn\u0027t connect the database). You can call update entity columns x.Col \u0026lt;- Some \u0022hi\u0022, but it doesn\u0027t really do anything.\r\nYou cannot call stored procedures.\r\nNames are database names, and they are case-sensitive. If you miss a table, in your mock, there will be clear error. If you mistyped anonymous record column name, you will probably just get a zero-result or ValueNone.Value-error or some other unwanted behaviour.\r\n\r\nIf you are running off-line solution like SSDT or ContextSchemaPath, you should be able to run also these unit-tests with your CI.\r\n","headings":["SQLProvider allows you to unit-test your SQL-logic","Why to unit-test?","How?","Example, executable business logic","Example, unit-test part"],"type":"content"}] \ No newline at end of file diff --git a/reference/expressionoptimizer-methods.html b/reference/expressionoptimizer-methods.html index e3c9ef49..083a3812 100644 --- a/reference/expressionoptimizer-methods.html +++ b/reference/expressionoptimizer-methods.html @@ -67,7 +67,7 @@ @@ -737,7 +737,7 @@

    -
     Purpose of this is optimize away already known constant=constant style expressions.
    +                  
     The purpose of this is to optimize away already known constant=constant style expressions.
        7 > 8      -->   False
      "G" = "G"    -->   True
    diff --git a/reference/fsharp-data-sql-aggregateoperation.html b/reference/fsharp-data-sql-aggregateoperation.html index 2db5aa72..069e678c 100644 --- a/reference/fsharp-data-sql-aggregateoperation.html +++ b/reference/fsharp-data-sql-aggregateoperation.html @@ -67,7 +67,7 @@ @@ -308,7 +308,7 @@

    - +

    @@ -317,7 +317,7 @@

    -
    +
    Full Usage: AvgOp avg @@ -355,7 +355,7 @@

    - +

    @@ -364,7 +364,7 @@

    -
    +
    Full Usage: CountDistOp countDist @@ -402,7 +402,7 @@

    - +

    @@ -411,7 +411,7 @@

    -
    +
    Full Usage: CountOp count @@ -449,7 +449,7 @@

    - +

    @@ -458,7 +458,7 @@

    -
    +
    Full Usage: KeyOp key @@ -496,7 +496,7 @@

    - +

    @@ -505,7 +505,7 @@

    -
    +
    Full Usage: MaxOp max @@ -543,7 +543,7 @@

    - +

    @@ -552,7 +552,7 @@

    -
    +
    Full Usage: MinOp min @@ -590,7 +590,7 @@

    - +

    @@ -599,7 +599,7 @@

    -
    +
    Full Usage: StdDevOp std @@ -637,7 +637,7 @@

    - +

    @@ -646,7 +646,7 @@

    -
    +
    Full Usage: SumOp sum @@ -684,7 +684,7 @@

    - +

    @@ -693,7 +693,7 @@

    -
    +
    Full Usage: VarianceOp var @@ -734,376 +734,7 @@

    -
    -

    - Instance members -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Instance member - - Description -
    -
    - -

    - - - this.IsAvgOp - - -

    -
    -
    -
    - Full Usage: - this.IsAvgOp -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsCountDistOp - - -

    -
    -
    -
    - Full Usage: - this.IsCountDistOp -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsCountOp - - -

    -
    -
    -
    - Full Usage: - this.IsCountOp -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsKeyOp - - -

    -
    -
    -
    - Full Usage: - this.IsKeyOp -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsMaxOp - - -

    -
    -
    -
    - Full Usage: - this.IsMaxOp -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsMinOp - - -

    -
    -
    -
    - Full Usage: - this.IsMinOp -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsStdDevOp - - -

    -
    -
    -
    - Full Usage: - this.IsStdDevOp -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsSumOp - - -

    -
    -
    -
    - Full Usage: - this.IsSumOp -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsVarianceOp - - -

    -
    -
    -
    - Full Usage: - this.IsVarianceOp -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    +

    diff --git a/reference/fsharp-data-sql-array.html b/reference/fsharp-data-sql-array.html index a63a547a..8ec3b381 100644 --- a/reference/fsharp-data-sql-array.html +++ b/reference/fsharp-data-sql-array.html @@ -67,7 +67,7 @@ @@ -315,7 +315,7 @@


    Returns: - Task<'a array> + Task<'a[]>

    @@ -355,7 +355,7 @@

    Returns: - Task<'a array> + Task<'a[]>
    diff --git a/reference/fsharp-data-sql-asyncoperations.html b/reference/fsharp-data-sql-asyncoperations.html index 5cd4051e..1a302053 100644 --- a/reference/fsharp-data-sql-asyncoperations.html +++ b/reference/fsharp-data-sql-asyncoperations.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-columnschema-alias.html b/reference/fsharp-data-sql-columnschema-alias.html index 8b6d23f8..8ea1c899 100644 --- a/reference/fsharp-data-sql-columnschema-alias.html +++ b/reference/fsharp-data-sql-columnschema-alias.html @@ -67,7 +67,7 @@ @@ -288,10 +288,6 @@

    IConvertible , IEquatable<string> - , - ISpanParsable<string> - , - IParsable<string>
    @@ -327,7 +323,7 @@

    - +

    @@ -336,7 +332,7 @@

    -
    +
    Full Usage: this.Chars @@ -388,7 +384,7 @@

    - +

    @@ -397,7 +393,7 @@

    -
    +
    Full Usage: this.Length diff --git a/reference/fsharp-data-sql-columnschema-canonicalop.html b/reference/fsharp-data-sql-columnschema-canonicalop.html index 1687d37b..f76e5108 100644 --- a/reference/fsharp-data-sql-columnschema-canonicalop.html +++ b/reference/fsharp-data-sql-columnschema-canonicalop.html @@ -67,7 +67,7 @@ @@ -2437,1936 +2437,7 @@

    -
    -

    - Instance members -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Instance member - - Description -
    -
    - -

    - - - this.IsACos - - -

    -
    -
    -
    - Full Usage: - this.IsACos -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsASin - - -

    -
    -
    -
    - Full Usage: - this.IsASin -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsATan - - -

    -
    -
    -
    - Full Usage: - this.IsATan -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsAbs - - -

    -
    -
    -
    - Full Usage: - this.IsAbs -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsAddDays - - -

    -
    -
    -
    - Full Usage: - this.IsAddDays -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsAddHours - - -

    -
    -
    -
    - Full Usage: - this.IsAddHours -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsAddMinutes - - -

    -
    -
    -
    - Full Usage: - this.IsAddMinutes -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsAddMonths - - -

    -
    -
    -
    - Full Usage: - this.IsAddMonths -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsAddSeconds - - -

    -
    -
    -
    - Full Usage: - this.IsAddSeconds -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsAddYears - - -

    -
    -
    -
    - Full Usage: - this.IsAddYears -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsBasicMath - - -

    -
    -
    -
    - Full Usage: - this.IsBasicMath -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsBasicMathLeft - - -

    -
    -
    -
    - Full Usage: - this.IsBasicMathLeft -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsBasicMathOfColumns - - -

    -
    -
    -
    - Full Usage: - this.IsBasicMathOfColumns -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsCaseNotSql - - -

    -
    -
    -
    - Full Usage: - this.IsCaseNotSql -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsCaseSql - - -

    -
    -
    -
    - Full Usage: - this.IsCaseSql -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsCaseSqlPlain - - -

    -
    -
    -
    - Full Usage: - this.IsCaseSqlPlain -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsCastInt - - -

    -
    -
    -
    - Full Usage: - this.IsCastInt -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsCastVarchar - - -

    -
    -
    -
    - Full Usage: - this.IsCastVarchar -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsCeil - - -

    -
    -
    -
    - Full Usage: - this.IsCeil -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsCos - - -

    -
    -
    -
    - Full Usage: - this.IsCos -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsDate - - -

    -
    -
    -
    - Full Usage: - this.IsDate -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsDateDiffDays - - -

    -
    -
    -
    - Full Usage: - this.IsDateDiffDays -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsDateDiffSecs - - -

    -
    -
    -
    - Full Usage: - this.IsDateDiffSecs -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsDay - - -

    -
    -
    -
    - Full Usage: - this.IsDay -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsFloor - - -

    -
    -
    -
    - Full Usage: - this.IsFloor -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsGreatest - - -

    -
    -
    -
    - Full Usage: - this.IsGreatest -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsHour - - -

    -
    -
    -
    - Full Usage: - this.IsHour -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsIndexOf - - -

    -
    -
    -
    - Full Usage: - this.IsIndexOf -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsIndexOfStart - - -

    -
    -
    -
    - Full Usage: - this.IsIndexOfStart -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsLeast - - -

    -
    -
    -
    - Full Usage: - this.IsLeast -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsLength - - -

    -
    -
    -
    - Full Usage: - this.IsLength -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsMinute - - -

    -
    -
    -
    - Full Usage: - this.IsMinute -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsMonth - - -

    -
    -
    -
    - Full Usage: - this.IsMonth -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsPow - - -

    -
    -
    -
    - Full Usage: - this.IsPow -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsPowConst - - -

    -
    -
    -
    - Full Usage: - this.IsPowConst -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsReplace - - -

    -
    -
    -
    - Full Usage: - this.IsReplace -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsRound - - -

    -
    -
    -
    - Full Usage: - this.IsRound -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsRoundDecimals - - -

    -
    -
    -
    - Full Usage: - this.IsRoundDecimals -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsSecond - - -

    -
    -
    -
    - Full Usage: - this.IsSecond -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsSin - - -

    -
    -
    -
    - Full Usage: - this.IsSin -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsSqrt - - -

    -
    -
    -
    - Full Usage: - this.IsSqrt -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsSubstring - - -

    -
    -
    -
    - Full Usage: - this.IsSubstring -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsSubstringWithLength - - -

    -
    -
    -
    - Full Usage: - this.IsSubstringWithLength -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsTan - - -

    -
    -
    -
    - Full Usage: - this.IsTan -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsToLower - - -

    -
    -
    -
    - Full Usage: - this.IsToLower -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsToUpper - - -

    -
    -
    -
    - Full Usage: - this.IsToUpper -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsTrim - - -

    -
    -
    -
    - Full Usage: - this.IsTrim -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsTruncate - - -

    -
    -
    -
    - Full Usage: - this.IsTruncate -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsYear - - -

    -
    -
    -
    - Full Usage: - this.IsYear -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    +

    diff --git a/reference/fsharp-data-sql-columnschema-condition.html b/reference/fsharp-data-sql-columnschema-condition.html index eb557c11..abe3cafe 100644 --- a/reference/fsharp-data-sql-columnschema-condition.html +++ b/reference/fsharp-data-sql-columnschema-condition.html @@ -67,7 +67,7 @@ @@ -305,7 +305,7 @@

    - +

    @@ -314,7 +314,7 @@

    -
    +
    Full Usage: And((alias * SqlColumnType * ConditionOperator * obj option) list, Condition list option) @@ -368,7 +368,7 @@

    - +

    @@ -377,7 +377,7 @@

    -
    +
    Full Usage: ConstantFalse @@ -401,7 +401,7 @@

    - +

    @@ -410,7 +410,7 @@

    -
    +
    Full Usage: ConstantTrue @@ -434,7 +434,7 @@

    - +

    @@ -443,7 +443,7 @@

    -
    +
    Full Usage: NotSupported Expression @@ -481,7 +481,7 @@

    - +

    @@ -490,7 +490,7 @@

    -
    +
    Full Usage: Or((alias * SqlColumnType * ConditionOperator * obj option) list, Condition list option) @@ -547,220 +547,7 @@

    -
    -

    - Instance members -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Instance member - - Description -
    -
    - -

    - - - this.IsAnd - - -

    -
    -
    -
    - Full Usage: - this.IsAnd -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsConstantFalse - - -

    -
    -
    -
    - Full Usage: - this.IsConstantFalse -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsConstantTrue - - -

    -
    -
    -
    - Full Usage: - this.IsConstantTrue -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsNotSupported - - -

    -
    -
    -
    - Full Usage: - this.IsNotSupported -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsOr - - -

    -
    -
    -
    - Full Usage: - this.IsOr -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    +

    diff --git a/reference/fsharp-data-sql-columnschema-projectionparameter.html b/reference/fsharp-data-sql-columnschema-projectionparameter.html index 0e08c43c..4c14db28 100644 --- a/reference/fsharp-data-sql-columnschema-projectionparameter.html +++ b/reference/fsharp-data-sql-columnschema-projectionparameter.html @@ -67,7 +67,7 @@ @@ -305,7 +305,7 @@

    - +

    @@ -314,7 +314,7 @@

    -
    +
    Full Usage: EntityColumn string @@ -352,7 +352,7 @@

    - +

    @@ -361,7 +361,7 @@

    -
    +
    Full Usage: OperationColumn(string, SqlColumnType) @@ -418,103 +418,7 @@

    -
    -

    - Instance members -

    - - - - - - - - - - - - - - - - - -
    - Instance member - - Description -
    -
    - -

    - - - this.IsEntityColumn - - -

    -
    -
    -
    - Full Usage: - this.IsEntityColumn -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsOperationColumn - - -

    -
    -
    -
    - Full Usage: - this.IsOperationColumn -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    +

    diff --git a/reference/fsharp-data-sql-columnschema-sqlcolumntype.html b/reference/fsharp-data-sql-columnschema-sqlcolumntype.html index 78d4234a..f91c14f6 100644 --- a/reference/fsharp-data-sql-columnschema-sqlcolumntype.html +++ b/reference/fsharp-data-sql-columnschema-sqlcolumntype.html @@ -67,7 +67,7 @@ @@ -305,7 +305,7 @@

    - +

    @@ -314,7 +314,7 @@

    -
    +
    Full Usage: CanonicalOperation(CanonicalOp, SqlColumnType) @@ -368,7 +368,7 @@

    - +

    @@ -377,7 +377,7 @@

    -
    +
    Full Usage: GroupColumn(AggregateOperation, SqlColumnType) @@ -431,7 +431,7 @@

    - +

    @@ -440,7 +440,7 @@

    -
    +
    Full Usage: KeyColumn string @@ -481,142 +481,7 @@

    -
    -

    - Instance members -

    - - - - - - - - - - - - - - - - - - - - - -
    - Instance member - - Description -
    -
    - -

    - - - this.IsCanonicalOperation - - -

    -
    -
    -
    - Full Usage: - this.IsCanonicalOperation -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsGroupColumn - - -

    -
    -
    -
    - Full Usage: - this.IsGroupColumn -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsKeyColumn - - -

    -
    -
    -
    - Full Usage: - this.IsKeyColumn -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    +

    diff --git a/reference/fsharp-data-sql-columnschema-sqlitemorcolumn.html b/reference/fsharp-data-sql-columnschema-sqlitemorcolumn.html index e2fac603..8ded635a 100644 --- a/reference/fsharp-data-sql-columnschema-sqlitemorcolumn.html +++ b/reference/fsharp-data-sql-columnschema-sqlitemorcolumn.html @@ -67,7 +67,7 @@ @@ -305,7 +305,7 @@

    - +

    @@ -314,7 +314,7 @@

    -
    +
    Full Usage: SqlCol(string, SqlColumnType) @@ -368,7 +368,7 @@

    - +

    @@ -377,7 +377,7 @@

    -
    +
    Full Usage: SqlConstant obj @@ -418,103 +418,7 @@

    -
    -

    - Instance members -

    - - - - - - - - - - - - - - - - - -
    - Instance member - - Description -
    -
    - -

    - - - this.IsSqlCol - - -

    -
    -
    -
    - Full Usage: - this.IsSqlCol -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsSqlConstant - - -

    -
    -
    -
    - Full Usage: - this.IsSqlConstant -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    +

    diff --git a/reference/fsharp-data-sql-columnschema.html b/reference/fsharp-data-sql-columnschema.html index c7439ae7..7d0a5d08 100644 --- a/reference/fsharp-data-sql-columnschema.html +++ b/reference/fsharp-data-sql-columnschema.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-common-bytes.html b/reference/fsharp-data-sql-common-bytes.html index e57f4586..e442403a 100644 --- a/reference/fsharp-data-sql-common-bytes.html +++ b/reference/fsharp-data-sql-common-bytes.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-common-casesensitivitychange.html b/reference/fsharp-data-sql-common-casesensitivitychange.html index 3de951cb..ebd8c316 100644 --- a/reference/fsharp-data-sql-common-casesensitivitychange.html +++ b/reference/fsharp-data-sql-common-casesensitivitychange.html @@ -67,7 +67,7 @@ @@ -269,8 +269,6 @@

    , IConvertible , - ISpanFormattable - , IFormattable
    @@ -310,7 +308,7 @@

    - +

    @@ -319,7 +317,7 @@

    -
    +
    Full Usage: ORIGINAL @@ -352,7 +350,7 @@

    - +

    @@ -361,7 +359,7 @@

    -
    +
    Full Usage: TOLOWER @@ -394,7 +392,7 @@

    - +

    @@ -403,7 +401,7 @@

    -
    +
    Full Usage: TOUPPER diff --git a/reference/fsharp-data-sql-common-confighelpers.html b/reference/fsharp-data-sql-common-confighelpers.html index c0010ec5..4e56aad3 100644 --- a/reference/fsharp-data-sql-common-confighelpers.html +++ b/reference/fsharp-data-sql-common-confighelpers.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-common-databaseprovidertypes.html b/reference/fsharp-data-sql-common-databaseprovidertypes.html index 8d7c7472..7971dc7b 100644 --- a/reference/fsharp-data-sql-common-databaseprovidertypes.html +++ b/reference/fsharp-data-sql-common-databaseprovidertypes.html @@ -67,7 +67,7 @@ @@ -269,8 +269,6 @@

    , IConvertible , - ISpanFormattable - , IFormattable

    @@ -310,7 +308,7 @@

    - +

    @@ -319,7 +317,7 @@

    -
    +
    Full Usage: DUCKDB @@ -352,7 +350,7 @@

    - +

    @@ -361,7 +359,7 @@

    -
    +
    Full Usage: FIREBIRD @@ -394,7 +392,7 @@

    - +

    @@ -403,7 +401,7 @@

    -
    +
    Full Usage: MSACCESS @@ -436,7 +434,7 @@

    - +

    @@ -445,7 +443,7 @@

    -
    +
    Full Usage: MSSQLSERVER @@ -478,7 +476,7 @@

    - +

    @@ -487,7 +485,7 @@

    -
    +
    Full Usage: MSSQLSERVER_DYNAMIC @@ -520,7 +518,7 @@

    - +

    @@ -529,7 +527,7 @@

    -
    +
    Full Usage: MSSQLSERVER_SSDT @@ -562,7 +560,7 @@

    - +

    @@ -571,7 +569,7 @@

    -
    +
    Full Usage: MYSQL @@ -604,7 +602,7 @@

    - +

    @@ -613,7 +611,7 @@

    -
    +
    Full Usage: ODBC @@ -646,7 +644,7 @@

    - +

    @@ -655,7 +653,7 @@

    -
    +
    Full Usage: ORACLE @@ -688,7 +686,7 @@

    - +

    @@ -697,7 +695,7 @@

    -
    +
    Full Usage: POSTGRESQL @@ -730,7 +728,7 @@

    - +

    @@ -739,7 +737,7 @@

    -
    +
    Full Usage: SQLITE diff --git a/reference/fsharp-data-sql-common-entitystate.html b/reference/fsharp-data-sql-common-entitystate.html index ab7c7a88..f9fcd451 100644 --- a/reference/fsharp-data-sql-common-entitystate.html +++ b/reference/fsharp-data-sql-common-entitystate.html @@ -67,7 +67,7 @@ @@ -308,7 +308,7 @@

    - +

    @@ -317,7 +317,7 @@

    -
    +
    Full Usage: Created @@ -341,7 +341,7 @@

    - +

    @@ -350,7 +350,7 @@

    -
    +
    Full Usage: Delete @@ -374,7 +374,7 @@

    - +

    @@ -383,7 +383,7 @@

    -
    +
    Full Usage: Deleted @@ -407,7 +407,7 @@

    - +

    @@ -416,7 +416,7 @@

    -
    +
    Full Usage: Modified string list @@ -454,7 +454,7 @@

    - +

    @@ -463,7 +463,7 @@

    -
    +
    Full Usage: Unchanged @@ -490,220 +490,7 @@

    -
    -

    - Instance members -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Instance member - - Description -
    -
    - -

    - - - this.IsCreated - - -

    -
    -
    -
    - Full Usage: - this.IsCreated -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsDelete - - -

    -
    -
    -
    - Full Usage: - this.IsDelete -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsDeleted - - -

    -
    -
    -
    - Full Usage: - this.IsDeleted -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsModified - - -

    -
    -
    -
    - Full Usage: - this.IsModified -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsUnchanged - - -

    -
    -
    -
    - Full Usage: - this.IsUnchanged -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    +

    diff --git a/reference/fsharp-data-sql-common-groupdata.html b/reference/fsharp-data-sql-common-groupdata.html index 1b848601..2b34841f 100644 --- a/reference/fsharp-data-sql-common-groupdata.html +++ b/reference/fsharp-data-sql-common-groupdata.html @@ -67,7 +67,7 @@ @@ -300,7 +300,7 @@

    - +

    @@ -309,7 +309,7 @@

    -
    +
    Full Usage: AggregateColumns @@ -339,7 +339,7 @@

    - +

    @@ -348,7 +348,7 @@

    -
    +
    Full Usage: KeyColumns @@ -378,7 +378,7 @@

    - +

    @@ -387,7 +387,7 @@

    -
    +
    Full Usage: PrimaryTable @@ -417,7 +417,7 @@

    - +

    @@ -426,7 +426,7 @@

    -
    +
    Full Usage: Projection diff --git a/reference/fsharp-data-sql-common-groupresultitems-2.html b/reference/fsharp-data-sql-common-groupresultitems-2.html index 6bd1fad9..ab13f75c 100644 --- a/reference/fsharp-data-sql-common-groupresultitems-2.html +++ b/reference/fsharp-data-sql-common-groupresultitems-2.html @@ -67,7 +67,7 @@ @@ -319,7 +319,7 @@

    - +

    @@ -328,7 +328,7 @@

    -
    +
    Full Usage: GroupResultItems(arg1, keyval, distinctItem) @@ -412,7 +412,7 @@

    - +

    @@ -421,7 +421,7 @@

    -
    +
    Full Usage: GroupResultItems(arg1, keyval, distinctItem) @@ -505,7 +505,7 @@

    - +

    @@ -514,7 +514,7 @@

    -
    +
    Full Usage: GroupResultItems(arg1, keyval, distinctItem) @@ -598,7 +598,7 @@

    - +

    @@ -607,7 +607,7 @@

    -
    +
    Full Usage: GroupResultItems(arg1, keyval, distinctItem) @@ -691,7 +691,7 @@

    - +

    @@ -700,7 +700,7 @@

    -
    +
    Full Usage: GroupResultItems(arg1, keyval, distinctItem) @@ -784,7 +784,7 @@

    - +

    @@ -793,7 +793,7 @@

    -
    +
    Full Usage: GroupResultItems(keyname, keyval, distinctItem) @@ -877,7 +877,7 @@

    - +

    @@ -886,7 +886,7 @@

    -
    +
    Full Usage: GroupResultItems(keyname, keyval, distinctItem) @@ -989,7 +989,7 @@

    - +

    @@ -998,7 +998,7 @@

    -
    +
    Full Usage: this.AggregateAverage @@ -1050,7 +1050,7 @@

    - +

    @@ -1059,7 +1059,7 @@

    -
    +
    Full Usage: this.AggregateAvg @@ -1111,7 +1111,7 @@

    - +

    @@ -1120,7 +1120,7 @@

    -
    +
    Full Usage: this.AggregateCount @@ -1172,7 +1172,7 @@

    - +

    @@ -1181,7 +1181,7 @@

    -
    +
    Full Usage: this.AggregateCountDistinct @@ -1233,7 +1233,7 @@

    - +

    @@ -1242,7 +1242,7 @@

    -
    +
    Full Usage: this.AggregateMax @@ -1294,7 +1294,7 @@

    - +

    @@ -1303,7 +1303,7 @@

    -
    +
    Full Usage: this.AggregateMin @@ -1355,7 +1355,7 @@

    - +

    @@ -1364,7 +1364,7 @@

    -
    +
    Full Usage: this.AggregateStDev @@ -1416,7 +1416,7 @@

    - +

    @@ -1425,7 +1425,7 @@

    -
    +
    Full Usage: this.AggregateStandardDeviation @@ -1477,7 +1477,7 @@

    - +

    @@ -1486,7 +1486,7 @@

    -
    +
    Full Usage: this.AggregateStdDev @@ -1538,7 +1538,7 @@

    - +

    @@ -1547,7 +1547,7 @@

    -
    +
    Full Usage: this.AggregateSum @@ -1599,7 +1599,7 @@

    - +

    @@ -1608,7 +1608,7 @@

    -
    +
    Full Usage: this.AggregateVariance @@ -1660,7 +1660,7 @@

    - +

    @@ -1669,7 +1669,7 @@

    -
    +
    Full Usage: this.Values @@ -1718,7 +1718,7 @@

    - +

    @@ -1727,7 +1727,7 @@

    -
    +
    Full Usage: GroupResultItems.op_Implicit x @@ -1779,7 +1779,7 @@

    - +

    @@ -1788,7 +1788,7 @@

    -
    +
    Full Usage: GroupResultItems.op_Implicit x diff --git a/reference/fsharp-data-sql-common-isqldatacontext.html b/reference/fsharp-data-sql-common-isqldatacontext.html index 4bcf9a38..7396866c 100644 --- a/reference/fsharp-data-sql-common-isqldatacontext.html +++ b/reference/fsharp-data-sql-common-isqldatacontext.html @@ -67,7 +67,7 @@ @@ -301,7 +301,7 @@

    - +

    @@ -310,7 +310,7 @@

    -
    +
    Full Usage: this.CallSproc @@ -415,7 +415,7 @@

    - +

    @@ -424,7 +424,7 @@

    -
    +
    Full Usage: this.CallSprocAsync @@ -529,7 +529,7 @@

    - +

    @@ -538,7 +538,7 @@

    -
    +
    Full Usage: this.ClearPendingChanges @@ -571,7 +571,7 @@

    - +

    @@ -580,7 +580,7 @@

    -
    +
    Full Usage: this.CommandTimeout @@ -631,7 +631,7 @@

    - +

    @@ -640,7 +640,7 @@

    -
    +
    Full Usage: this.ConnectionString @@ -691,7 +691,7 @@

    - +

    @@ -700,7 +700,7 @@

    -
    +
    Full Usage: this.CreateConnection @@ -751,7 +751,7 @@

    - +

    @@ -760,7 +760,7 @@

    -
    +
    Full Usage: this.CreateEntities @@ -833,7 +833,7 @@

    - +

    @@ -842,7 +842,7 @@

    -
    +
    Full Usage: this.CreateEntity @@ -915,7 +915,7 @@

    - +

    @@ -924,7 +924,7 @@

    -
    +
    Full Usage: this.CreateRelated @@ -1093,7 +1093,7 @@

    - +

    @@ -1102,7 +1102,7 @@

    -
    +
    Full Usage: this.GetIndividual @@ -1191,7 +1191,7 @@

    - +

    @@ -1200,7 +1200,7 @@

    -
    +
    Full Usage: this.GetPendingEntities @@ -1251,7 +1251,7 @@

    - +

    @@ -1260,7 +1260,7 @@

    -
    +
    Full Usage: this.GetPrimaryKeyDefinition @@ -1333,7 +1333,7 @@

    - +

    @@ -1342,7 +1342,7 @@

    -
    +
    Full Usage: this.ReadEntities @@ -1447,7 +1447,7 @@

    - +

    @@ -1456,7 +1456,7 @@

    -
    +
    Full Usage: this.ReadEntitiesAsync @@ -1561,7 +1561,7 @@

    - +

    @@ -1570,7 +1570,7 @@

    -
    +
    Full Usage: this.SaveContextSchema @@ -1629,7 +1629,7 @@

    - +

    @@ -1638,7 +1638,7 @@

    -
    +
    Full Usage: this.SqlOperationsInSelect @@ -1689,7 +1689,7 @@

    - +

    @@ -1698,7 +1698,7 @@

    -
    +
    Full Usage: this.SubmitChangedEntity @@ -1757,7 +1757,7 @@

    - +

    @@ -1766,7 +1766,7 @@

    -
    +
    Full Usage: this.SubmitPendingChanges @@ -1799,7 +1799,7 @@

    - +

    @@ -1808,7 +1808,7 @@

    -
    +
    Full Usage: this.SubmitPendingChangesAsync diff --git a/reference/fsharp-data-sql-common-iwithdatacontext.html b/reference/fsharp-data-sql-common-iwithdatacontext.html index d2649a87..63c8f8cd 100644 --- a/reference/fsharp-data-sql-common-iwithdatacontext.html +++ b/reference/fsharp-data-sql-common-iwithdatacontext.html @@ -67,7 +67,7 @@ @@ -301,7 +301,7 @@

    - +

    @@ -310,7 +310,7 @@

    -
    +
    Full Usage: this.DataContext diff --git a/reference/fsharp-data-sql-common-linkdata.html b/reference/fsharp-data-sql-common-linkdata.html index a611545d..dbb6e962 100644 --- a/reference/fsharp-data-sql-common-linkdata.html +++ b/reference/fsharp-data-sql-common-linkdata.html @@ -67,7 +67,7 @@ @@ -300,7 +300,7 @@

    - +

    @@ -309,7 +309,7 @@

    -
    +
    Full Usage: ForeignKey @@ -339,7 +339,7 @@

    - +

    @@ -348,7 +348,7 @@

    -
    +
    Full Usage: ForeignTable @@ -378,7 +378,7 @@

    - +

    @@ -387,7 +387,7 @@

    -
    +
    Full Usage: OuterJoin @@ -417,7 +417,7 @@

    - +

    @@ -426,7 +426,7 @@

    -
    +
    Full Usage: PrimaryKey @@ -456,7 +456,7 @@

    - +

    @@ -465,7 +465,7 @@

    -
    +
    Full Usage: PrimaryTable @@ -495,7 +495,7 @@

    - +

    @@ -504,7 +504,7 @@

    -
    +
    Full Usage: RelDirection @@ -555,7 +555,7 @@

    - +

    @@ -564,7 +564,7 @@

    -
    +
    Full Usage: this.Rev diff --git a/reference/fsharp-data-sql-common-mappedcolumnattribute.html b/reference/fsharp-data-sql-common-mappedcolumnattribute.html index d0e78463..bc096900 100644 --- a/reference/fsharp-data-sql-common-mappedcolumnattribute.html +++ b/reference/fsharp-data-sql-common-mappedcolumnattribute.html @@ -67,7 +67,7 @@ @@ -299,7 +299,7 @@

    - +

    @@ -308,7 +308,7 @@

    -
    +
    Full Usage: MappedColumnAttribute(name) @@ -379,7 +379,7 @@

    - +

    @@ -388,7 +388,7 @@

    -
    +
    Full Usage: this.Name diff --git a/reference/fsharp-data-sql-common-nullablecolumntype.html b/reference/fsharp-data-sql-common-nullablecolumntype.html index 4a163b70..304088c4 100644 --- a/reference/fsharp-data-sql-common-nullablecolumntype.html +++ b/reference/fsharp-data-sql-common-nullablecolumntype.html @@ -67,7 +67,7 @@ @@ -269,8 +269,6 @@

    , IConvertible , - ISpanFormattable - , IFormattable

    @@ -310,7 +308,7 @@

    - +

    @@ -319,7 +317,7 @@

    -
    +
    Full Usage: NO_OPTION @@ -364,7 +362,7 @@

    - +

    @@ -373,7 +371,7 @@

    -
    +
    Full Usage: OPTION @@ -418,7 +416,7 @@

    - +

    @@ -427,7 +425,7 @@

    -
    +
    Full Usage: VALUE_OPTION diff --git a/reference/fsharp-data-sql-common-odbcquotecharacter.html b/reference/fsharp-data-sql-common-odbcquotecharacter.html index 8b05226f..a33535fa 100644 --- a/reference/fsharp-data-sql-common-odbcquotecharacter.html +++ b/reference/fsharp-data-sql-common-odbcquotecharacter.html @@ -67,7 +67,7 @@ @@ -269,8 +269,6 @@

    , IConvertible , - ISpanFormattable - , IFormattable

    @@ -310,7 +308,7 @@

    - +

    @@ -319,7 +317,7 @@

    -
    +
    Full Usage: APHOSTROPHE @@ -364,7 +362,7 @@

    - +

    @@ -373,7 +371,7 @@

    -
    +
    Full Usage: DEFAULT_QUOTE @@ -406,7 +404,7 @@

    - +

    @@ -415,7 +413,7 @@

    -
    +
    Full Usage: DOUBLE_QUOTES @@ -460,7 +458,7 @@

    - +

    @@ -469,7 +467,7 @@

    -
    +
    Full Usage: GRAVE_ACCENT @@ -514,7 +512,7 @@

    - +

    @@ -523,7 +521,7 @@

    -
    +
    Full Usage: NO_QUOTES @@ -568,7 +566,7 @@

    - +

    @@ -577,7 +575,7 @@

    -
    +
    Full Usage: SQUARE_BRACKETS diff --git a/reference/fsharp-data-sql-common-offlinetools-mockqueryable-1.html b/reference/fsharp-data-sql-common-offlinetools-mockqueryable-1.html index ccce29d7..8b483f0e 100644 --- a/reference/fsharp-data-sql-common-offlinetools-mockqueryable-1.html +++ b/reference/fsharp-data-sql-common-offlinetools-mockqueryable-1.html @@ -67,7 +67,7 @@ @@ -314,7 +314,7 @@

    - +

    @@ -323,7 +323,7 @@

    -
    +
    Full Usage: MockQueryable(dc, itms) diff --git a/reference/fsharp-data-sql-common-offlinetools.html b/reference/fsharp-data-sql-common-offlinetools.html index aed3a3a4..08be4e82 100644 --- a/reference/fsharp-data-sql-common-offlinetools.html +++ b/reference/fsharp-data-sql-common-offlinetools.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-common-onconflict.html b/reference/fsharp-data-sql-common-onconflict.html index 1cd66877..07aef5a1 100644 --- a/reference/fsharp-data-sql-common-onconflict.html +++ b/reference/fsharp-data-sql-common-onconflict.html @@ -67,7 +67,7 @@ @@ -308,7 +308,7 @@

    - +

    @@ -317,7 +317,7 @@

    -
    +
    Full Usage: DoNothing @@ -342,7 +342,7 @@

    - +

    @@ -351,7 +351,7 @@

    -
    +
    Full Usage: Throw @@ -375,7 +375,7 @@

    - +

    @@ -384,7 +384,7 @@

    -
    +
    Full Usage: Update @@ -412,142 +412,7 @@

    -
    -

    - Instance members -

    - - - - - - - - - - - - - - - - - - - - - -
    - Instance member - - Description -
    -
    - -

    - - - this.IsDoNothing - - -

    -
    -
    -
    - Full Usage: - this.IsDoNothing -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsThrow - - -

    -
    -
    -
    - Full Usage: - this.IsThrow -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsUpdate - - -

    -
    -
    -
    - Full Usage: - this.IsUpdate -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    +

    diff --git a/reference/fsharp-data-sql-common-queryevents-sqleventdata.html b/reference/fsharp-data-sql-common-queryevents-sqleventdata.html index e91d9f73..d60e1744 100644 --- a/reference/fsharp-data-sql-common-queryevents-sqleventdata.html +++ b/reference/fsharp-data-sql-common-queryevents-sqleventdata.html @@ -67,7 +67,7 @@ @@ -306,7 +306,7 @@

    - +

    @@ -315,7 +315,7 @@

    -
    +
    Full Usage: Command @@ -357,7 +357,7 @@

    - +

    @@ -366,7 +366,7 @@

    -
    +
    Full Usage: ConnectionStringHash @@ -409,7 +409,7 @@

    - +

    @@ -418,7 +418,7 @@

    -
    +
    Full Usage: Parameters @@ -481,7 +481,7 @@

    - +

    @@ -490,7 +490,7 @@

    -
    +
    Full Usage: this.ToRawSql @@ -538,7 +538,7 @@

    - +

    @@ -547,7 +547,7 @@

    -
    +
    Full Usage: this.ToRawSqlWithParamInfo diff --git a/reference/fsharp-data-sql-common-queryevents.html b/reference/fsharp-data-sql-common-queryevents.html index ddcffeec..3cd5da16 100644 --- a/reference/fsharp-data-sql-common-queryevents.html +++ b/reference/fsharp-data-sql-common-queryevents.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-common-relationshipdirection.html b/reference/fsharp-data-sql-common-relationshipdirection.html index 7f6309c0..a83d8f4c 100644 --- a/reference/fsharp-data-sql-common-relationshipdirection.html +++ b/reference/fsharp-data-sql-common-relationshipdirection.html @@ -67,7 +67,7 @@ @@ -269,8 +269,6 @@

    , IConvertible , - ISpanFormattable - , IFormattable

    @@ -310,7 +308,7 @@

    - +

    @@ -319,7 +317,7 @@

    -
    +
    Full Usage: Children @@ -352,7 +350,7 @@

    - +

    @@ -361,7 +359,7 @@

    -
    +
    Full Usage: Parents diff --git a/reference/fsharp-data-sql-common-resultset.html b/reference/fsharp-data-sql-common-resultset.html index 7b1bbc86..6b21d6bd 100644 --- a/reference/fsharp-data-sql-common-resultset.html +++ b/reference/fsharp-data-sql-common-resultset.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-common-returnsettype.html b/reference/fsharp-data-sql-common-returnsettype.html index ab5feebb..503992df 100644 --- a/reference/fsharp-data-sql-common-returnsettype.html +++ b/reference/fsharp-data-sql-common-returnsettype.html @@ -67,7 +67,7 @@ @@ -299,7 +299,7 @@

    - +

    @@ -308,7 +308,7 @@

    -
    +
    Full Usage: ResultSet(string, ResultSet) @@ -362,7 +362,7 @@

    - +

    @@ -371,7 +371,7 @@

    -
    +
    Full Usage: ScalarResultSet(string, obj) @@ -428,103 +428,7 @@

    -
    -

    - Instance members -

    - - - - - - - - - - - - - - - - - -
    - Instance member - - Description -
    -
    - -

    - - - this.IsResultSet - - -

    -
    -
    -
    - Full Usage: - this.IsResultSet -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsScalarResultSet - - -

    -
    -
    -
    - Full Usage: - this.IsScalarResultSet -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    +

    diff --git a/reference/fsharp-data-sql-common-returnvaluetype.html b/reference/fsharp-data-sql-common-returnvaluetype.html index 32e46f36..9eb55551 100644 --- a/reference/fsharp-data-sql-common-returnvaluetype.html +++ b/reference/fsharp-data-sql-common-returnvaluetype.html @@ -67,7 +67,7 @@ @@ -299,7 +299,7 @@

    - +

    @@ -308,7 +308,7 @@

    -
    +
    Full Usage: Scalar(string, obj) @@ -362,7 +362,7 @@

    - +

    @@ -371,7 +371,7 @@

    -
    +
    Full Usage: Set ReturnSetType seq @@ -409,7 +409,7 @@

    - +

    @@ -418,7 +418,7 @@

    -
    +
    Full Usage: SingleResultSet(string, ResultSet) @@ -472,7 +472,7 @@

    - +

    @@ -481,7 +481,7 @@

    -
    +
    Full Usage: Unit @@ -508,181 +508,7 @@

    -
    -

    - Instance members -

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Instance member - - Description -
    -
    - -

    - - - this.IsScalar - - -

    -
    -
    -
    - Full Usage: - this.IsScalar -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsSet - - -

    -
    -
    -
    - Full Usage: - this.IsSet -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsSingleResultSet - - -

    -
    -
    -
    - Full Usage: - this.IsSingleResultSet -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsUnit - - -

    -
    -
    -
    - Full Usage: - this.IsUnit -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    +

    diff --git a/reference/fsharp-data-sql-common-selectdata.html b/reference/fsharp-data-sql-common-selectdata.html index b85166ca..77863508 100644 --- a/reference/fsharp-data-sql-common-selectdata.html +++ b/reference/fsharp-data-sql-common-selectdata.html @@ -67,7 +67,7 @@ @@ -299,7 +299,7 @@

    - +

    @@ -308,7 +308,7 @@

    -
    +
    Full Usage: CrossJoin alias * Table @@ -346,7 +346,7 @@

    - +

    @@ -355,7 +355,7 @@

    -
    +
    Full Usage: GroupQuery GroupData @@ -393,7 +393,7 @@

    - +

    @@ -402,7 +402,7 @@

    -
    +
    Full Usage: LinkQuery LinkData @@ -443,142 +443,7 @@

    -
    -

    - Instance members -

    - - - - - - - - - - - - - - - - - - - - - -
    - Instance member - - Description -
    -
    - -

    - - - this.IsCrossJoin - - -

    -
    -
    -
    - Full Usage: - this.IsCrossJoin -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsGroupQuery - - -

    -
    -
    -
    - Full Usage: - this.IsGroupQuery -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsLinkQuery - - -

    -
    -
    -
    - Full Usage: - this.IsLinkQuery -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    +

    diff --git a/reference/fsharp-data-sql-common-sql.html b/reference/fsharp-data-sql-common-sql.html index 150bf439..f0003ce6 100644 --- a/reference/fsharp-data-sql-common-sql.html +++ b/reference/fsharp-data-sql-common-sql.html @@ -67,7 +67,7 @@ @@ -530,7 +530,7 @@


    Returns: - Task<(string * obj)[] array> + Task<(string * obj)[][]>

    @@ -553,7 +553,7 @@

    Returns: - Task<(string * obj)[] array> + Task<(string * obj)[][]>

    diff --git a/reference/fsharp-data-sql-common-sqlentity.html b/reference/fsharp-data-sql-common-sqlentity.html index 119965e6..6797ff2d 100644 --- a/reference/fsharp-data-sql-common-sqlentity.html +++ b/reference/fsharp-data-sql-common-sqlentity.html @@ -67,7 +67,7 @@ @@ -302,7 +302,7 @@

    - +

    @@ -311,7 +311,7 @@

    -
    +
    Full Usage: SqlEntity(dc, tableName, columns) @@ -414,7 +414,7 @@

    - +

    @@ -423,7 +423,7 @@

    -
    +
    Full Usage: this.Clone @@ -472,7 +472,7 @@

    - +

    @@ -481,7 +481,7 @@

    -
    +
    Full Usage: this.CloneTo @@ -570,7 +570,7 @@

    - +

    @@ -579,7 +579,7 @@

    -
    +
    Full Usage: this.ColumnValues @@ -609,7 +609,7 @@

    - +

    @@ -618,7 +618,7 @@

    -
    +
    Full Usage: this.DataContext @@ -648,7 +648,7 @@

    - +

    @@ -657,7 +657,7 @@

    -
    +
    Full Usage: this.Delete @@ -687,7 +687,7 @@

    - +

    @@ -696,7 +696,7 @@

    -
    +
    Full Usage: this.GetColumn @@ -748,7 +748,7 @@

    - +

    @@ -757,7 +757,7 @@

    -
    +
    Full Usage: this.GetColumnOption @@ -809,7 +809,7 @@

    - +

    @@ -818,7 +818,7 @@

    -
    +
    Full Usage: this.GetColumnValueOption @@ -870,7 +870,7 @@

    - +

    @@ -879,7 +879,7 @@

    -
    +
    Full Usage: this.GetPkColumnOption @@ -931,7 +931,7 @@

    - +

    @@ -940,7 +940,7 @@

    -
    +
    Full Usage: this.HasColumn @@ -1008,7 +1008,7 @@

    - +

    @@ -1017,7 +1017,7 @@

    -
    +
    Full Usage: this.HasValue @@ -1069,7 +1069,7 @@

    - +

    @@ -1078,7 +1078,7 @@

    -
    +
    Full Usage: this.MapTo @@ -1130,7 +1130,7 @@

    - +

    @@ -1139,7 +1139,7 @@

    -
    +
    Full Usage: this.OnConflict @@ -1169,7 +1169,7 @@

    - +

    @@ -1178,7 +1178,7 @@

    -
    +
    Full Usage: this.SetColumn @@ -1232,7 +1232,7 @@

    - +

    @@ -1241,7 +1241,7 @@

    -
    +
    Full Usage: this.SetColumnOption @@ -1295,7 +1295,7 @@

    - +

    @@ -1304,7 +1304,7 @@

    -
    +
    Full Usage: this.SetColumnOptionSilent @@ -1358,7 +1358,7 @@

    - +

    @@ -1367,7 +1367,7 @@

    -
    +
    Full Usage: this.SetColumnSilent @@ -1421,7 +1421,7 @@

    - +

    @@ -1430,7 +1430,7 @@

    -
    +
    Full Usage: this.SetColumnValueOption @@ -1484,7 +1484,7 @@

    - +

    @@ -1493,7 +1493,7 @@

    -
    +
    Full Usage: this.SetData @@ -1506,7 +1506,7 @@

    data : - (string * 'a) seq + (string * 'f) seq
    @@ -1522,7 +1522,7 @@

    data : - (string * 'a) seq + (string * 'f) seq
    @@ -1531,7 +1531,7 @@

    - +

    @@ -1540,7 +1540,7 @@

    -
    +
    Full Usage: this.SetPkColumnOptionSilent @@ -1594,7 +1594,7 @@

    - +

    @@ -1603,7 +1603,7 @@

    -
    +
    Full Usage: this.SetPkColumnSilent @@ -1657,7 +1657,7 @@

    - +

    @@ -1666,7 +1666,7 @@

    -
    +
    Full Usage: this.Table @@ -1696,7 +1696,7 @@

    - +

    @@ -1705,7 +1705,7 @@

    -
    +
    Full Usage: this._State diff --git a/reference/fsharp-data-sql-common-sqlitelibrary.html b/reference/fsharp-data-sql-common-sqlitelibrary.html index a786ceb3..4348ed61 100644 --- a/reference/fsharp-data-sql-common-sqlitelibrary.html +++ b/reference/fsharp-data-sql-common-sqlitelibrary.html @@ -67,7 +67,7 @@ @@ -269,8 +269,6 @@

    , IConvertible , - ISpanFormattable - , IFormattable
    @@ -310,7 +308,7 @@

    - +

    @@ -319,7 +317,7 @@

    -
    +
    Full Usage: AutoSelect @@ -352,7 +350,7 @@

    - +

    @@ -361,7 +359,7 @@

    -
    +
    Full Usage: MicrosoftDataSqlite @@ -394,7 +392,7 @@

    - +

    @@ -403,7 +401,7 @@

    -
    +
    Full Usage: MonoDataSQLite @@ -436,7 +434,7 @@

    - +

    @@ -445,7 +443,7 @@

    -
    +
    Full Usage: SystemDataSQLite diff --git a/reference/fsharp-data-sql-common-standardextensions.html b/reference/fsharp-data-sql-common-standardextensions.html index 0cf2554e..04b16112 100644 --- a/reference/fsharp-data-sql-common-standardextensions.html +++ b/reference/fsharp-data-sql-common-standardextensions.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-common-stubs.html b/reference/fsharp-data-sql-common-stubs.html index e3a0666b..47c72023 100644 --- a/reference/fsharp-data-sql-common-stubs.html +++ b/reference/fsharp-data-sql-common-stubs.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-common-table.html b/reference/fsharp-data-sql-common-table.html index 758f4f03..44a304b6 100644 --- a/reference/fsharp-data-sql-common-table.html +++ b/reference/fsharp-data-sql-common-table.html @@ -67,7 +67,7 @@ @@ -282,10 +282,6 @@

    IConvertible , IEquatable<string> - , - ISpanParsable<string> - , - IParsable<string>

    @@ -321,7 +317,7 @@

    - +

    @@ -330,7 +326,7 @@

    -
    +
    Full Usage: this.Chars @@ -382,7 +378,7 @@

    - +

    @@ -391,7 +387,7 @@

    -
    +
    Full Usage: this.Length diff --git a/reference/fsharp-data-sql-common-uniontype.html b/reference/fsharp-data-sql-common-uniontype.html index 76f25f85..a651fa21 100644 --- a/reference/fsharp-data-sql-common-uniontype.html +++ b/reference/fsharp-data-sql-common-uniontype.html @@ -67,7 +67,7 @@ @@ -308,7 +308,7 @@

    - +

    @@ -317,7 +317,7 @@

    -
    +
    Full Usage: Except @@ -341,7 +341,7 @@

    - +

    @@ -350,7 +350,7 @@

    -
    +
    Full Usage: Intersect @@ -374,7 +374,7 @@

    - +

    @@ -383,7 +383,7 @@

    -
    +
    Full Usage: NormalUnion @@ -407,7 +407,7 @@

    - +

    @@ -416,7 +416,7 @@

    -
    +
    Full Usage: UnionAll @@ -443,181 +443,7 @@

    -
    -

    - Instance members -

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Instance member - - Description -
    -
    - -

    - - - this.IsExcept - - -

    -
    -
    -
    - Full Usage: - this.IsExcept -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsIntersect - - -

    -
    -
    -
    - Full Usage: - this.IsIntersect -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsNormalUnion - - -

    -
    -
    -
    - Full Usage: - this.IsNormalUnion -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsUnionAll - - -

    -
    -
    -
    - Full Usage: - this.IsUnionAll -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    +

    diff --git a/reference/fsharp-data-sql-common.html b/reference/fsharp-data-sql-common.html index fbe39b42..3689e463 100644 --- a/reference/fsharp-data-sql-common.html +++ b/reference/fsharp-data-sql-common.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-conditionoperator.html b/reference/fsharp-data-sql-conditionoperator.html index 664511c9..f9ee657f 100644 --- a/reference/fsharp-data-sql-conditionoperator.html +++ b/reference/fsharp-data-sql-conditionoperator.html @@ -67,7 +67,7 @@ @@ -308,7 +308,7 @@

    - +

    @@ -317,7 +317,7 @@

    -
    +
    Full Usage: Equal @@ -341,7 +341,7 @@

    - +

    @@ -350,7 +350,7 @@

    -
    +
    Full Usage: GreaterEqual @@ -374,7 +374,7 @@

    - +

    @@ -383,7 +383,7 @@

    -
    +
    Full Usage: GreaterThan @@ -407,7 +407,7 @@

    - +

    @@ -416,7 +416,7 @@

    -
    +
    Full Usage: In @@ -440,7 +440,7 @@

    - +

    @@ -449,7 +449,7 @@

    -
    +
    Full Usage: IsNull @@ -473,7 +473,7 @@

    - +

    @@ -482,7 +482,7 @@

    -
    +
    Full Usage: LessEqual @@ -506,7 +506,7 @@

    - +

    @@ -515,7 +515,7 @@

    -
    +
    Full Usage: LessThan @@ -539,7 +539,7 @@

    - +

    @@ -548,7 +548,7 @@

    -
    +
    Full Usage: Like @@ -572,7 +572,7 @@

    - +

    @@ -581,7 +581,7 @@

    -
    +
    Full Usage: NestedExists @@ -605,7 +605,7 @@

    - +

    @@ -614,7 +614,7 @@

    -
    +
    Full Usage: NestedIn @@ -638,7 +638,7 @@

    - +

    @@ -647,7 +647,7 @@

    -
    +
    Full Usage: NestedNotExists @@ -671,7 +671,7 @@

    - +

    @@ -680,7 +680,7 @@

    -
    +
    Full Usage: NestedNotIn @@ -704,7 +704,7 @@

    - +

    @@ -713,7 +713,7 @@

    -
    +
    Full Usage: NotEqual @@ -737,7 +737,7 @@

    - +

    @@ -746,7 +746,7 @@

    -
    +
    Full Usage: NotIn @@ -770,7 +770,7 @@

    - +

    @@ -779,7 +779,7 @@

    -
    +
    Full Usage: NotLike @@ -803,7 +803,7 @@

    - +

    @@ -812,7 +812,7 @@

    -
    +
    Full Usage: NotNull @@ -839,649 +839,7 @@

    -
    -

    - Instance members -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Instance member - - Description -
    -
    - -

    - - - this.IsEqual - - -

    -
    -
    -
    - Full Usage: - this.IsEqual -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsGreaterEqual - - -

    -
    -
    -
    - Full Usage: - this.IsGreaterEqual -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsGreaterThan - - -

    -
    -
    -
    - Full Usage: - this.IsGreaterThan -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsIn - - -

    -
    -
    -
    - Full Usage: - this.IsIn -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsIsNull - - -

    -
    -
    -
    - Full Usage: - this.IsIsNull -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsLessEqual - - -

    -
    -
    -
    - Full Usage: - this.IsLessEqual -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsLessThan - - -

    -
    -
    -
    - Full Usage: - this.IsLessThan -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsLike - - -

    -
    -
    -
    - Full Usage: - this.IsLike -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsNestedExists - - -

    -
    -
    -
    - Full Usage: - this.IsNestedExists -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsNestedIn - - -

    -
    -
    -
    - Full Usage: - this.IsNestedIn -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsNestedNotExists - - -

    -
    -
    -
    - Full Usage: - this.IsNestedNotExists -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsNestedNotIn - - -

    -
    -
    -
    - Full Usage: - this.IsNestedNotIn -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsNotEqual - - -

    -
    -
    -
    - Full Usage: - this.IsNotEqual -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsNotIn - - -

    -
    -
    -
    - Full Usage: - this.IsNotIn -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsNotLike - - -

    -
    -
    -
    - Full Usage: - this.IsNotLike -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsNotNull - - -

    -
    -
    -
    - Full Usage: - this.IsNotNull -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    +

    diff --git a/reference/fsharp-data-sql-datatable.html b/reference/fsharp-data-sql-datatable.html index 73eefc61..58e0ed6a 100644 --- a/reference/fsharp-data-sql-datatable.html +++ b/reference/fsharp-data-sql-datatable.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-list.html b/reference/fsharp-data-sql-list.html index 8e0c8c45..f8ce72c6 100644 --- a/reference/fsharp-data-sql-list.html +++ b/reference/fsharp-data-sql-list.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-operators.html b/reference/fsharp-data-sql-operators.html index b5ed35ff..a546584a 100644 --- a/reference/fsharp-data-sql-operators.html +++ b/reference/fsharp-data-sql-operators.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-providers-duckdb.html b/reference/fsharp-data-sql-providers-duckdb.html index 7124145f..d436ef58 100644 --- a/reference/fsharp-data-sql-providers-duckdb.html +++ b/reference/fsharp-data-sql-providers-duckdb.html @@ -67,7 +67,7 @@ @@ -1076,7 +1076,7 @@


    Returns: - (int * IDbDataParameter) array * (int * IDbDataParameter) array + (int * IDbDataParameter)[] * (int * IDbDataParameter)[]

    @@ -1115,7 +1115,7 @@

    Returns: - (int * IDbDataParameter) array * (int * IDbDataParameter) array + (int * IDbDataParameter)[] * (int * IDbDataParameter)[]
    diff --git a/reference/fsharp-data-sql-providers-firebird-datareaderwithcommand.html b/reference/fsharp-data-sql-providers-firebird-datareaderwithcommand.html index 8e2d17cd..5956a6fd 100644 --- a/reference/fsharp-data-sql-providers-firebird-datareaderwithcommand.html +++ b/reference/fsharp-data-sql-providers-firebird-datareaderwithcommand.html @@ -67,7 +67,7 @@ @@ -310,7 +310,7 @@

    - +

    @@ -319,7 +319,7 @@

    -
    +
    Full Usage: DataReaderWithCommand(dataReader, command) @@ -406,7 +406,7 @@

    - +

    @@ -415,7 +415,7 @@

    -
    +
    Full Usage: this.Command @@ -445,7 +445,7 @@

    - +

    @@ -454,7 +454,7 @@

    -
    +
    Full Usage: this.DataReader diff --git a/reference/fsharp-data-sql-providers-firebird.html b/reference/fsharp-data-sql-providers-firebird.html index 67925ef1..c4ba6bef 100644 --- a/reference/fsharp-data-sql-providers-firebird.html +++ b/reference/fsharp-data-sql-providers-firebird.html @@ -67,7 +67,7 @@ @@ -1161,7 +1161,7 @@


    Returns: - (int * IDbDataParameter) array * (int * IDbDataParameter) array + (int * IDbDataParameter)[] * (int * IDbDataParameter)[]

    @@ -1200,7 +1200,7 @@

    Returns: - (int * IDbDataParameter) array * (int * IDbDataParameter) array + (int * IDbDataParameter)[] * (int * IDbDataParameter)[]
    diff --git a/reference/fsharp-data-sql-providers-mssqlserver.html b/reference/fsharp-data-sql-providers-mssqlserver.html index bb260f16..bf277d95 100644 --- a/reference/fsharp-data-sql-providers-mssqlserver.html +++ b/reference/fsharp-data-sql-providers-mssqlserver.html @@ -67,7 +67,7 @@ @@ -1164,7 +1164,7 @@


    Returns: - (int * string * IDbDataParameter) array * (int * string * IDbDataParameter) array + (int * string * IDbDataParameter)[] * (int * string * IDbDataParameter)[]

    @@ -1203,7 +1203,7 @@

    Returns: - (int * string * IDbDataParameter) array * (int * string * IDbDataParameter) array + (int * string * IDbDataParameter)[] * (int * string * IDbDataParameter)[]
    diff --git a/reference/fsharp-data-sql-providers-mssqlserverdynamic.html b/reference/fsharp-data-sql-providers-mssqlserverdynamic.html index c0927567..21c4ee1b 100644 --- a/reference/fsharp-data-sql-providers-mssqlserverdynamic.html +++ b/reference/fsharp-data-sql-providers-mssqlserverdynamic.html @@ -67,7 +67,7 @@ @@ -1298,7 +1298,7 @@


    Returns: - (int * string * IDbDataParameter) array * (int * string * IDbDataParameter) array + (int * string * IDbDataParameter)[] * (int * string * IDbDataParameter)[]

    @@ -1337,7 +1337,7 @@

    Returns: - (int * string * IDbDataParameter) array * (int * string * IDbDataParameter) array + (int * string * IDbDataParameter)[] * (int * string * IDbDataParameter)[]
    diff --git a/reference/fsharp-data-sql-providers-mssqlserverssdt.html b/reference/fsharp-data-sql-providers-mssqlserverssdt.html index aa9a037e..81d24f77 100644 --- a/reference/fsharp-data-sql-providers-mssqlserverssdt.html +++ b/reference/fsharp-data-sql-providers-mssqlserverssdt.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-providers-mysql.html b/reference/fsharp-data-sql-providers-mysql.html index 8ea0c881..c02af401 100644 --- a/reference/fsharp-data-sql-providers-mysql.html +++ b/reference/fsharp-data-sql-providers-mysql.html @@ -67,7 +67,7 @@ @@ -1115,7 +1115,7 @@


    Returns: - (int * IDbDataParameter) array * (int * IDbDataParameter) array + (int * IDbDataParameter)[] * (int * IDbDataParameter)[]

    @@ -1154,7 +1154,7 @@

    Returns: - (int * IDbDataParameter) array * (int * IDbDataParameter) array + (int * IDbDataParameter)[] * (int * IDbDataParameter)[]
    diff --git a/reference/fsharp-data-sql-providers-postgresql.html b/reference/fsharp-data-sql-providers-postgresql.html index e0d32434..0517f493 100644 --- a/reference/fsharp-data-sql-providers-postgresql.html +++ b/reference/fsharp-data-sql-providers-postgresql.html @@ -67,7 +67,7 @@ @@ -1162,7 +1162,7 @@


    Returns: - (int * IDbDataParameter) array * (int * IDbDataParameter) array + (int * IDbDataParameter)[] * (int * IDbDataParameter)[]

    @@ -1201,7 +1201,7 @@

    Returns: - (int * IDbDataParameter) array * (int * IDbDataParameter) array + (int * IDbDataParameter)[] * (int * IDbDataParameter)[]
    diff --git a/reference/fsharp-data-sql-providers.html b/reference/fsharp-data-sql-providers.html index 75780559..e08b3413 100644 --- a/reference/fsharp-data-sql-providers.html +++ b/reference/fsharp-data-sql-providers.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-quotationhelpers.html b/reference/fsharp-data-sql-quotationhelpers.html index 7fc55678..c187fa8b 100644 --- a/reference/fsharp-data-sql-quotationhelpers.html +++ b/reference/fsharp-data-sql-quotationhelpers.html @@ -67,7 +67,7 @@ @@ -377,7 +377,7 @@

    fields : - obj array + obj[]
    @@ -406,7 +406,7 @@

    fields : - obj array + obj[]
    diff --git a/reference/fsharp-data-sql-runtime-casttuplemaker-7.html b/reference/fsharp-data-sql-runtime-casttuplemaker-7.html index 8f9a10fb..3eafb97a 100644 --- a/reference/fsharp-data-sql-runtime-casttuplemaker-7.html +++ b/reference/fsharp-data-sql-runtime-casttuplemaker-7.html @@ -67,7 +67,7 @@ @@ -298,7 +298,7 @@

    - +

    @@ -307,7 +307,7 @@

    -
    +
    Full Usage: CastTupleMaker.makeTuple2 (t1, t2) @@ -375,7 +375,7 @@

    - +

    @@ -384,7 +384,7 @@

    -
    +
    Full Usage: CastTupleMaker.makeTuple3 (t1, t2, t3) @@ -468,7 +468,7 @@

    - +

    @@ -477,7 +477,7 @@

    -
    +
    Full Usage: CastTupleMaker.makeTuple4 (t1, t2, t3, t4) @@ -577,7 +577,7 @@

    - +

    @@ -586,7 +586,7 @@

    -
    +
    Full Usage: CastTupleMaker.makeTuple5 (t1, t2, t3, t4, t5) @@ -702,7 +702,7 @@

    - +

    @@ -711,7 +711,7 @@

    -
    +
    Full Usage: CastTupleMaker.makeTuple6 (t1, t2, t3, t4, t5, t6) @@ -843,7 +843,7 @@

    - +

    @@ -852,7 +852,7 @@

    -
    +
    Full Usage: CastTupleMaker.makeTuple7 (t1, t2, t3, t4, t5, t6, t7) diff --git a/reference/fsharp-data-sql-runtime-seq.html b/reference/fsharp-data-sql-runtime-seq.html index 2d42231e..9eff4f39 100644 --- a/reference/fsharp-data-sql-runtime-seq.html +++ b/reference/fsharp-data-sql-runtime-seq.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-runtime-sqldatacontext.html b/reference/fsharp-data-sql-runtime-sqldatacontext.html index bc210aba..772b1a80 100644 --- a/reference/fsharp-data-sql-runtime-sqldatacontext.html +++ b/reference/fsharp-data-sql-runtime-sqldatacontext.html @@ -67,7 +67,7 @@ @@ -300,7 +300,7 @@

    - +

    @@ -309,7 +309,7 @@

    -
    +
    Full Usage: SqlDataContext(typeName, connectionString, providerType, resolutionPath, referencedAssemblies, runtimeAssembly, owner, caseSensitivity, tableNames, contextSchemaPath, odbcquote, sqliteLibrary, transactionOptions, commandTimeout, sqlOperationsInSelect, ssdtPath) @@ -354,7 +354,7 @@

    referencedAssemblies : - string array + string[]
    @@ -495,7 +495,7 @@

    referencedAssemblies : - string array + string[]
    diff --git a/reference/fsharp-data-sql-runtime.html b/reference/fsharp-data-sql-runtime.html index 1a03319d..582f79ce 100644 --- a/reference/fsharp-data-sql-runtime.html +++ b/reference/fsharp-data-sql-runtime.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-schema-column.html b/reference/fsharp-data-sql-schema-column.html index 261c92a9..fe347e42 100644 --- a/reference/fsharp-data-sql-schema-column.html +++ b/reference/fsharp-data-sql-schema-column.html @@ -67,7 +67,7 @@ @@ -309,7 +309,7 @@

    - +

    @@ -318,7 +318,7 @@

    -
    +
    Full Usage: HasDefault @@ -348,7 +348,7 @@

    - +

    @@ -357,7 +357,7 @@

    -
    +
    Full Usage: IsAutonumber @@ -387,7 +387,7 @@

    - +

    @@ -396,7 +396,7 @@

    -
    +
    Full Usage: IsComputed @@ -426,7 +426,7 @@

    - +

    @@ -435,7 +435,7 @@

    -
    +
    Full Usage: IsNullable @@ -465,7 +465,7 @@

    - +

    @@ -474,7 +474,7 @@

    -
    +
    Full Usage: IsPrimaryKey @@ -504,7 +504,7 @@

    - +

    @@ -513,7 +513,7 @@

    -
    +
    Full Usage: Name @@ -543,7 +543,7 @@

    - +

    @@ -552,7 +552,7 @@

    -
    +
    Full Usage: TypeInfo @@ -582,7 +582,7 @@

    - +

    @@ -591,7 +591,7 @@

    -
    +
    Full Usage: TypeMapping @@ -643,7 +643,7 @@

    - +

    @@ -652,7 +652,7 @@

    -
    +
    Full Usage: Column.FromQueryParameter(q) diff --git a/reference/fsharp-data-sql-schema-columnlookup.html b/reference/fsharp-data-sql-schema-columnlookup.html index 4d546297..c5e6720f 100644 --- a/reference/fsharp-data-sql-schema-columnlookup.html +++ b/reference/fsharp-data-sql-schema-columnlookup.html @@ -67,7 +67,7 @@ @@ -273,8 +273,6 @@

    , IReadOnlyCollection<KeyValuePair<string, Column>> , - IStructuralEquatable - , IComparable , IDictionary<string, Column> @@ -319,7 +317,7 @@

    - +

    @@ -328,7 +326,7 @@

    -
    +
    Full Usage: this.Count @@ -358,7 +356,7 @@

    - +

    @@ -367,7 +365,7 @@

    -
    +
    Full Usage: this.IsEmpty @@ -397,7 +395,7 @@

    - +

    @@ -406,7 +404,7 @@

    -
    +
    Full Usage: this[key] @@ -458,7 +456,7 @@

    - +

    @@ -467,7 +465,7 @@

    -
    +
    Full Usage: this.Keys @@ -497,7 +495,7 @@

    - +

    @@ -506,7 +504,7 @@

    -
    +
    Full Usage: this.Values diff --git a/reference/fsharp-data-sql-schema-compiletimepackagedefinition.html b/reference/fsharp-data-sql-schema-compiletimepackagedefinition.html index ea78fead..fa988d1b 100644 --- a/reference/fsharp-data-sql-schema-compiletimepackagedefinition.html +++ b/reference/fsharp-data-sql-schema-compiletimepackagedefinition.html @@ -67,7 +67,7 @@ @@ -294,7 +294,7 @@

    - +

    @@ -303,7 +303,7 @@

    -
    +
    Full Usage: Name @@ -333,7 +333,7 @@

    - +

    @@ -342,7 +342,7 @@

    -
    +
    Full Usage: Sprocs diff --git a/reference/fsharp-data-sql-schema-compiletimesprocdefinition.html b/reference/fsharp-data-sql-schema-compiletimesprocdefinition.html index 5985b01c..87e822c4 100644 --- a/reference/fsharp-data-sql-schema-compiletimesprocdefinition.html +++ b/reference/fsharp-data-sql-schema-compiletimesprocdefinition.html @@ -67,7 +67,7 @@ @@ -294,7 +294,7 @@

    - +

    @@ -303,7 +303,7 @@

    -
    +
    Full Usage: Name @@ -333,7 +333,7 @@

    - +

    @@ -342,7 +342,7 @@

    -
    +
    Full Usage: Params @@ -372,7 +372,7 @@

    - +

    @@ -381,7 +381,7 @@

    -
    +
    Full Usage: ReturnColumns diff --git a/reference/fsharp-data-sql-schema-queryparameter.html b/reference/fsharp-data-sql-schema-queryparameter.html index f7d287ce..d37a0be4 100644 --- a/reference/fsharp-data-sql-schema-queryparameter.html +++ b/reference/fsharp-data-sql-schema-queryparameter.html @@ -67,7 +67,7 @@ @@ -309,7 +309,7 @@

    - +

    @@ -318,7 +318,7 @@

    -
    +
    Full Usage: Direction @@ -348,7 +348,7 @@

    - +

    @@ -357,7 +357,7 @@

    -
    +
    Full Usage: Length @@ -387,7 +387,7 @@

    - +

    @@ -396,7 +396,7 @@

    -
    +
    Full Usage: Name @@ -426,7 +426,7 @@

    - +

    @@ -435,7 +435,7 @@

    -
    +
    Full Usage: Ordinal @@ -465,7 +465,7 @@

    - +

    @@ -474,7 +474,7 @@

    -
    +
    Full Usage: TypeMapping @@ -526,7 +526,7 @@

    - +

    @@ -535,7 +535,7 @@

    -
    +
    Full Usage: QueryParameter.Create(name, ordinal, ?typeMapping, ?direction, ?length) diff --git a/reference/fsharp-data-sql-schema-relationship.html b/reference/fsharp-data-sql-schema-relationship.html index b46e0dac..8d0d7e78 100644 --- a/reference/fsharp-data-sql-schema-relationship.html +++ b/reference/fsharp-data-sql-schema-relationship.html @@ -67,7 +67,7 @@ @@ -309,7 +309,7 @@

    - +

    @@ -318,7 +318,7 @@

    -
    +
    Full Usage: ForeignKey @@ -348,7 +348,7 @@

    - +

    @@ -357,7 +357,7 @@

    -
    +
    Full Usage: ForeignTable @@ -387,7 +387,7 @@

    - +

    @@ -396,7 +396,7 @@

    -
    +
    Full Usage: Name @@ -426,7 +426,7 @@

    - +

    @@ -435,7 +435,7 @@

    -
    +
    Full Usage: PrimaryKey @@ -465,7 +465,7 @@

    - +

    @@ -474,7 +474,7 @@

    -
    +
    Full Usage: PrimaryTable diff --git a/reference/fsharp-data-sql-schema-runtimesprocdefinition.html b/reference/fsharp-data-sql-schema-runtimesprocdefinition.html index bfc414a5..2f3d4ef0 100644 --- a/reference/fsharp-data-sql-schema-runtimesprocdefinition.html +++ b/reference/fsharp-data-sql-schema-runtimesprocdefinition.html @@ -67,7 +67,7 @@ @@ -306,7 +306,7 @@

    - +

    @@ -315,7 +315,7 @@

    -
    +
    Full Usage: Name @@ -345,7 +345,7 @@

    - +

    @@ -354,7 +354,7 @@

    -
    +
    Full Usage: Params diff --git a/reference/fsharp-data-sql-schema-sproc.html b/reference/fsharp-data-sql-schema-sproc.html index 337fe097..6d6fe4f2 100644 --- a/reference/fsharp-data-sql-schema-sproc.html +++ b/reference/fsharp-data-sql-schema-sproc.html @@ -67,7 +67,7 @@ @@ -293,7 +293,7 @@

    - +

    @@ -302,7 +302,7 @@

    -
    +
    Full Usage: Empty @@ -314,7 +314,7 @@

    - +

    @@ -326,7 +326,7 @@

    - +

    @@ -335,7 +335,7 @@

    -
    +
    Full Usage: Package(string, CompileTimePackageDefinition) @@ -389,7 +389,7 @@

    - +

    @@ -398,7 +398,7 @@

    -
    +
    Full Usage: Root(string, Sproc) @@ -452,7 +452,7 @@

    - +

    @@ -461,7 +461,7 @@

    -
    +
    Full Usage: Sproc CompileTimeSprocDefinition @@ -502,181 +502,7 @@

    -
    -

    - Instance members -

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Instance member - - Description -
    -
    - -

    - - - this.IsEmpty - - -

    -
    -
    -
    - Full Usage: - this.IsEmpty -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsPackage - - -

    -
    -
    -
    - Full Usage: - this.IsPackage -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsRoot - - -

    -
    -
    -
    - Full Usage: - this.IsRoot -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    - -

    - - - this.IsSproc - - -

    -
    -
    -
    - Full Usage: - this.IsSproc -
    -
    - - Returns: - bool - -
    -
    -
    -
    -
    -
    -
    - - Returns: - - bool -
    -
    -
    -
    -
    +

    Static members @@ -696,7 +522,7 @@

    - +

    @@ -705,7 +531,7 @@

    -
    +
    Full Usage: Sproc.GetKnownTypes() @@ -713,7 +539,7 @@


    Returns: - Type array + Type[]

    @@ -726,7 +552,7 @@

    Returns: - Type array + Type[]

    diff --git a/reference/fsharp-data-sql-schema-sprocname.html b/reference/fsharp-data-sql-schema-sprocname.html index 9f5e076d..909cf5b5 100644 --- a/reference/fsharp-data-sql-schema-sprocname.html +++ b/reference/fsharp-data-sql-schema-sprocname.html @@ -67,7 +67,7 @@ @@ -309,7 +309,7 @@

    - +

    @@ -318,7 +318,7 @@

    -
    +
    Full Usage: Owner @@ -348,7 +348,7 @@

    - +

    @@ -357,7 +357,7 @@

    -
    +
    Full Usage: PackageName @@ -387,7 +387,7 @@

    - +

    @@ -396,7 +396,7 @@

    -
    +
    Full Usage: ProcName @@ -447,7 +447,7 @@

    - +

    @@ -456,7 +456,7 @@

    -
    +
    Full Usage: this.DbName @@ -486,7 +486,7 @@

    - +

    @@ -495,7 +495,7 @@

    -
    +
    Full Usage: this.FriendlyName @@ -525,7 +525,7 @@

    - +

    @@ -534,7 +534,7 @@

    -
    +
    Full Usage: this.FullName @@ -564,7 +564,7 @@

    - +

    @@ -573,7 +573,7 @@

    -
    +
    Full Usage: this.ToList diff --git a/reference/fsharp-data-sql-schema-table.html b/reference/fsharp-data-sql-schema-table.html index 0ef336b9..96055471 100644 --- a/reference/fsharp-data-sql-schema-table.html +++ b/reference/fsharp-data-sql-schema-table.html @@ -67,7 +67,7 @@ @@ -309,7 +309,7 @@

    - +

    @@ -318,7 +318,7 @@

    -
    +
    Full Usage: Name @@ -348,7 +348,7 @@

    - +

    @@ -357,7 +357,7 @@

    -
    +
    Full Usage: Schema @@ -387,7 +387,7 @@

    - +

    @@ -396,7 +396,7 @@

    -
    +
    Full Usage: Type @@ -447,7 +447,7 @@

    - +

    @@ -456,7 +456,7 @@

    -
    +
    Full Usage: this.FullName @@ -486,7 +486,7 @@

    - +

    @@ -495,7 +495,7 @@

    -
    +
    Full Usage: this.QuotedFullName @@ -582,7 +582,7 @@

    - +

    @@ -591,7 +591,7 @@

    -
    +
    Full Usage: Table.CreateFullName(schema, name) @@ -659,7 +659,7 @@

    - +

    @@ -668,7 +668,7 @@

    -
    +
    Full Usage: Table.CreateQuotedFullName(schema, name, startQuote, endQuote) @@ -768,7 +768,7 @@

    - +

    @@ -777,7 +777,7 @@

    -
    +
    Full Usage: Table.FromFullName(fullName) diff --git a/reference/fsharp-data-sql-schema-typemapping.html b/reference/fsharp-data-sql-schema-typemapping.html index 2da636c0..21bebf62 100644 --- a/reference/fsharp-data-sql-schema-typemapping.html +++ b/reference/fsharp-data-sql-schema-typemapping.html @@ -67,7 +67,7 @@ @@ -309,7 +309,7 @@

    - +

    @@ -318,7 +318,7 @@

    -
    +
    Full Usage: ClrType @@ -348,7 +348,7 @@

    - +

    @@ -357,7 +357,7 @@

    -
    +
    Full Usage: DbType @@ -387,7 +387,7 @@

    - +

    @@ -396,7 +396,7 @@

    -
    +
    Full Usage: ProviderType @@ -426,7 +426,7 @@

    - +

    @@ -435,7 +435,7 @@

    -
    +
    Full Usage: ProviderTypeName @@ -487,7 +487,7 @@

    - +

    @@ -496,7 +496,7 @@

    -
    +
    Full Usage: TypeMapping.Create(?clrType, ?dbType, ?providerTypeName, ?providerType) diff --git a/reference/fsharp-data-sql-schema.html b/reference/fsharp-data-sql-schema.html index 6a930864..7b6d7d47 100644 --- a/reference/fsharp-data-sql-schema.html +++ b/reference/fsharp-data-sql-schema.html @@ -67,7 +67,7 @@ @@ -280,7 +280,7 @@

    - +

    @@ -307,7 +307,7 @@

    - +

    @@ -334,7 +334,7 @@

    - +

    @@ -361,7 +361,7 @@

    - +

    @@ -388,7 +388,7 @@

    - +

    @@ -415,7 +415,7 @@

    - +

    @@ -442,7 +442,7 @@

    - +

    @@ -469,7 +469,7 @@

    - +

    @@ -496,7 +496,7 @@

    - +

    @@ -523,7 +523,7 @@

    - +

    @@ -550,7 +550,7 @@

    - +

    diff --git a/reference/fsharp-data-sql-selectoperations.html b/reference/fsharp-data-sql-selectoperations.html index 8f89e6e4..4c311770 100644 --- a/reference/fsharp-data-sql-selectoperations.html +++ b/reference/fsharp-data-sql-selectoperations.html @@ -67,7 +67,7 @@

    @@ -269,8 +269,6 @@

    , IConvertible , - ISpanFormattable - , IFormattable
    @@ -310,7 +308,7 @@

    - +

    @@ -319,7 +317,7 @@

    -
    +
    Full Usage: DatabaseSide @@ -352,7 +350,7 @@

    - +

    @@ -361,7 +359,7 @@

    -
    +
    Full Usage: DotNetSide diff --git a/reference/fsharp-data-sql-seq.html b/reference/fsharp-data-sql-seq.html index d2cf2cf9..b4f44171 100644 --- a/reference/fsharp-data-sql-seq.html +++ b/reference/fsharp-data-sql-seq.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-sqldataprovider.html b/reference/fsharp-data-sql-sqldataprovider.html index dfb00610..f8e8b3f6 100644 --- a/reference/fsharp-data-sql-sqldataprovider.html +++ b/reference/fsharp-data-sql-sqldataprovider.html @@ -67,7 +67,7 @@ @@ -298,7 +298,7 @@

    - +

    @@ -307,7 +307,7 @@

    -
    +
    Full Usage: CaseSensitivityChange: CaseSensitivityChange(optional,default=ORIGINAL) @@ -331,7 +331,7 @@

    - +

    @@ -340,7 +340,7 @@

    -
    +
    Full Usage: ConnectionString: string(optional,default="") @@ -364,7 +364,7 @@

    - +

    @@ -373,7 +373,7 @@

    -
    +
    Full Usage: ConnectionStringName: string(optional,default="") @@ -397,7 +397,7 @@

    - +

    @@ -406,7 +406,7 @@

    -
    +
    Full Usage: ContextSchemaPath: string(optional,default="") @@ -430,7 +430,7 @@

    - +

    @@ -439,7 +439,7 @@

    -
    +
    Full Usage: DatabaseVendor: DatabaseProviderTypes(optional,default=MSSQLSERVER) @@ -463,7 +463,7 @@

    - +

    @@ -472,7 +472,7 @@

    -
    +
    Full Usage: IndividualsAmount: int(optional,default=50) @@ -496,7 +496,7 @@

    - +

    @@ -505,7 +505,7 @@

    -
    +
    Full Usage: OdbcQuote: OdbcQuoteCharacter(optional,default=DEFAULT_QUOTE) @@ -529,7 +529,7 @@

    - +

    @@ -538,7 +538,7 @@

    -
    +
    Full Usage: Owner: string(optional,default="") @@ -562,7 +562,7 @@

    - +

    @@ -571,7 +571,7 @@

    -
    +
    Full Usage: ResolutionPath: string(optional,default="") @@ -595,7 +595,7 @@

    - +

    @@ -604,7 +604,7 @@

    -
    +
    Full Usage: SQLiteLibrary: SQLiteLibrary(optional,default=AutoSelect) @@ -628,7 +628,7 @@

    - +

    @@ -637,7 +637,7 @@

    -
    +
    Full Usage: SsdtPath: string(optional,default="") @@ -661,7 +661,7 @@

    - +

    @@ -670,7 +670,7 @@

    -
    +
    Full Usage: TableNames: string(optional,default="") @@ -694,7 +694,7 @@

    - +

    @@ -703,7 +703,7 @@

    -
    +
    Full Usage: UseOptionTypes: NullableColumnType(optional,default=NO_OPTION) diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-commentannotation.html b/reference/fsharp-data-sql-ssdt-dacpacparser-commentannotation.html index 9e22d41e..9b042f26 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-commentannotation.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-commentannotation.html @@ -67,7 +67,7 @@ @@ -315,7 +315,7 @@

    - +

    @@ -324,7 +324,7 @@

    -
    +
    Full Usage: Column @@ -354,7 +354,7 @@

    - +

    @@ -363,7 +363,7 @@

    -
    +
    Full Usage: DataType @@ -393,7 +393,7 @@

    - +

    @@ -402,7 +402,7 @@

    -
    +
    Full Usage: Nullability diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-constraintcolumn.html b/reference/fsharp-data-sql-ssdt-dacpacparser-constraintcolumn.html index 774cc64d..ed610115 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-constraintcolumn.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-constraintcolumn.html @@ -67,7 +67,7 @@ @@ -315,7 +315,7 @@

    - +

    @@ -324,7 +324,7 @@

    -
    +
    Full Usage: FullName @@ -354,7 +354,7 @@

    - +

    @@ -363,7 +363,7 @@

    -
    +
    Full Usage: Name diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-primarykeyconstraint.html b/reference/fsharp-data-sql-ssdt-dacpacparser-primarykeyconstraint.html index 2ae439ee..b5432bfb 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-primarykeyconstraint.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-primarykeyconstraint.html @@ -67,7 +67,7 @@ @@ -312,7 +312,7 @@

    - +

    @@ -321,7 +321,7 @@

    -
    +
    Full Usage: Columns @@ -351,7 +351,7 @@

    - +

    @@ -360,7 +360,7 @@

    -
    +
    Full Usage: Name diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-reftable.html b/reference/fsharp-data-sql-ssdt-dacpacparser-reftable.html index b52f088c..3fec22f6 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-reftable.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-reftable.html @@ -67,7 +67,7 @@ @@ -312,7 +312,7 @@

    - +

    @@ -321,7 +321,7 @@

    -
    +
    Full Usage: Columns @@ -351,7 +351,7 @@

    - +

    @@ -360,7 +360,7 @@

    -
    +
    Full Usage: FullName @@ -390,7 +390,7 @@

    - +

    @@ -399,7 +399,7 @@

    -
    +
    Full Usage: Name @@ -429,7 +429,7 @@

    - +

    @@ -438,7 +438,7 @@

    -
    +
    Full Usage: Schema diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html b/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html index 2808c827..4752664f 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-regexparsers.html @@ -67,7 +67,7 @@ @@ -455,7 +455,7 @@


    Returns: - CommentAnnotation array + CommentAnnotation[]

    @@ -495,7 +495,7 @@

    Returns: - CommentAnnotation array + CommentAnnotation[]

    @@ -534,7 +534,7 @@


    Returns: - string array + string[]

    @@ -575,7 +575,7 @@

    Returns: - string array + string[]
    diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html index bafec824..739402f8 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtcolumn.html @@ -67,7 +67,7 @@ @@ -315,7 +315,7 @@

    - +

    @@ -324,7 +324,7 @@

    -
    +
    Full Usage: AllowNulls @@ -354,7 +354,7 @@

    - +

    @@ -363,7 +363,7 @@

    -
    +
    Full Usage: ComputedColumn @@ -393,7 +393,7 @@

    - +

    @@ -402,7 +402,7 @@

    -
    +
    Full Usage: DataType @@ -432,7 +432,7 @@

    - +

    @@ -441,7 +441,7 @@

    -
    +
    Full Usage: Description @@ -471,7 +471,7 @@

    - +

    @@ -480,7 +480,7 @@

    -
    +
    Full Usage: FullName @@ -510,7 +510,7 @@

    - +

    @@ -519,7 +519,7 @@

    -
    +
    Full Usage: HasDefault @@ -549,7 +549,7 @@

    - +

    @@ -558,7 +558,7 @@

    -
    +
    Full Usage: IsIdentity @@ -588,7 +588,7 @@

    - +

    @@ -597,7 +597,7 @@

    -
    +
    Full Usage: Name diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtdescriptionitem.html b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtdescriptionitem.html index 9e7f65da..fa8a13ba 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtdescriptionitem.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtdescriptionitem.html @@ -67,7 +67,7 @@ @@ -315,7 +315,7 @@

    - +

    @@ -324,7 +324,7 @@

    -
    +
    Full Usage: ColumnName @@ -354,7 +354,7 @@

    - +

    @@ -363,7 +363,7 @@

    -
    +
    Full Usage: DecriptionType @@ -393,7 +393,7 @@

    - +

    @@ -402,7 +402,7 @@

    -
    +
    Full Usage: Description @@ -432,7 +432,7 @@

    - +

    @@ -441,7 +441,7 @@

    -
    +
    Full Usage: Schema @@ -471,7 +471,7 @@

    - +

    @@ -480,7 +480,7 @@

    -
    +
    Full Usage: TableName diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtrelationship.html b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtrelationship.html index 544fd978..bb43d545 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtrelationship.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtrelationship.html @@ -67,7 +67,7 @@ @@ -312,7 +312,7 @@

    - +

    @@ -321,7 +321,7 @@

    -
    +
    Full Usage: DefiningTable @@ -351,7 +351,7 @@

    - +

    @@ -360,7 +360,7 @@

    -
    +
    Full Usage: ForeignTable @@ -390,7 +390,7 @@

    - +

    @@ -399,7 +399,7 @@

    -
    +
    Full Usage: Name diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html index f9ab0668..a08b8613 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtschema.html @@ -67,7 +67,7 @@ @@ -300,7 +300,7 @@

    - +

    @@ -309,7 +309,7 @@

    -
    +
    Full Usage: Descriptions @@ -339,7 +339,7 @@

    - +

    @@ -348,7 +348,7 @@

    -
    +
    Full Usage: Relationships @@ -378,7 +378,7 @@

    - +

    @@ -387,7 +387,7 @@

    -
    +
    Full Usage: StoredProcs @@ -417,7 +417,7 @@

    - +

    @@ -426,7 +426,7 @@

    -
    +
    Full Usage: Tables @@ -456,7 +456,7 @@

    - +

    @@ -465,7 +465,7 @@

    -
    +
    Full Usage: TryGetTableByName @@ -495,7 +495,7 @@

    - +

    @@ -504,7 +504,7 @@

    -
    +
    Full Usage: UserDefinedDataTypes diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredproc.html b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredproc.html index 0853f09d..a8c9cf42 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredproc.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredproc.html @@ -67,7 +67,7 @@ @@ -312,7 +312,7 @@

    - +

    @@ -321,7 +321,7 @@

    -
    +
    Full Usage: FullName @@ -351,7 +351,7 @@

    - +

    @@ -360,7 +360,7 @@

    -
    +
    Full Usage: Name @@ -390,7 +390,7 @@

    - +

    @@ -399,7 +399,7 @@

    -
    +
    Full Usage: Parameters @@ -429,7 +429,7 @@

    - +

    @@ -438,7 +438,7 @@

    -
    +
    Full Usage: Schema diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredprocparam.html b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredprocparam.html index 0479e56b..88bd2a9e 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredprocparam.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtstoredprocparam.html @@ -67,7 +67,7 @@ @@ -315,7 +315,7 @@

    - +

    @@ -324,7 +324,7 @@

    -
    +
    Full Usage: DataType @@ -354,7 +354,7 @@

    - +

    @@ -363,7 +363,7 @@

    -
    +
    Full Usage: FullName @@ -393,7 +393,7 @@

    - +

    @@ -402,7 +402,7 @@

    -
    +
    Full Usage: IsOutput @@ -432,7 +432,7 @@

    - +

    @@ -441,7 +441,7 @@

    -
    +
    Full Usage: Length @@ -471,7 +471,7 @@

    - +

    @@ -480,7 +480,7 @@

    -
    +
    Full Usage: Name diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html index d2c32921..f2c2af81 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdttable.html @@ -67,7 +67,7 @@ @@ -312,7 +312,7 @@

    - +

    @@ -321,7 +321,7 @@

    -
    +
    Full Usage: Columns @@ -351,7 +351,7 @@

    - +

    @@ -360,7 +360,7 @@

    -
    +
    Full Usage: FullName @@ -390,7 +390,7 @@

    - +

    @@ -399,7 +399,7 @@

    -
    +
    Full Usage: IsView @@ -429,7 +429,7 @@

    - +

    @@ -438,7 +438,7 @@

    -
    +
    Full Usage: Name @@ -468,7 +468,7 @@

    - +

    @@ -477,7 +477,7 @@

    -
    +
    Full Usage: PrimaryKey @@ -507,7 +507,7 @@

    - +

    @@ -516,7 +516,7 @@

    -
    +
    Full Usage: Schema diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtuserdefineddatatype.html b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtuserdefineddatatype.html index 5ec74347..24c98afd 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtuserdefineddatatype.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtuserdefineddatatype.html @@ -67,7 +67,7 @@ @@ -279,8 +279,6 @@

    , IReadOnlyCollection<KeyValuePair<UDDTName, UDDTInheritedType>> , - IStructuralEquatable - , IComparable , IDictionary<UDDTName, UDDTInheritedType> @@ -325,7 +323,7 @@

    - +

    @@ -334,7 +332,7 @@

    -
    +
    Full Usage: this.Count @@ -364,7 +362,7 @@

    - +

    @@ -373,7 +371,7 @@

    -
    +
    Full Usage: this.IsEmpty @@ -403,7 +401,7 @@

    - +

    @@ -412,7 +410,7 @@

    -
    +
    Full Usage: this[key] @@ -464,7 +462,7 @@

    - +

    @@ -473,7 +471,7 @@

    -
    +
    Full Usage: this.Keys @@ -503,7 +501,7 @@

    - +

    @@ -512,7 +510,7 @@

    -
    +
    Full Usage: this.Values diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html index f97e12e8..c10da93d 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtview.html @@ -67,7 +67,7 @@ @@ -312,7 +312,7 @@

    - +

    @@ -321,7 +321,7 @@

    -
    +
    Full Usage: Annotations @@ -351,7 +351,7 @@

    - +

    @@ -360,7 +360,7 @@

    -
    +
    Full Usage: Columns @@ -390,7 +390,7 @@

    - +

    @@ -399,7 +399,7 @@

    -
    +
    Full Usage: DynamicColumns @@ -429,7 +429,7 @@

    - +

    @@ -438,7 +438,7 @@

    -
    +
    Full Usage: FullName @@ -468,7 +468,7 @@

    - +

    @@ -477,7 +477,7 @@

    -
    +
    Full Usage: Name @@ -507,7 +507,7 @@

    - +

    @@ -516,7 +516,7 @@

    -
    +
    Full Usage: Schema diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtviewcolumn.html b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtviewcolumn.html index 78624af5..64bf7478 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtviewcolumn.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-ssdtviewcolumn.html @@ -67,7 +67,7 @@ @@ -315,7 +315,7 @@

    - +

    @@ -324,7 +324,7 @@

    -
    +
    Full Usage: ColumnRefPath @@ -354,7 +354,7 @@

    - +

    @@ -363,7 +363,7 @@

    -
    +
    Full Usage: FullName diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-uddtinheritedtype.html b/reference/fsharp-data-sql-ssdt-dacpacparser-uddtinheritedtype.html index 9cb21bc5..0b4e8d3c 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-uddtinheritedtype.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-uddtinheritedtype.html @@ -67,7 +67,7 @@ @@ -314,7 +314,7 @@

    - +

    @@ -323,7 +323,7 @@

    -
    +
    Full Usage: UDDTInheritedType string diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser-uddtname.html b/reference/fsharp-data-sql-ssdt-dacpacparser-uddtname.html index c060ca30..98138d5a 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser-uddtname.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser-uddtname.html @@ -67,7 +67,7 @@ @@ -314,7 +314,7 @@

    - +

    @@ -323,7 +323,7 @@

    -
    +
    Full Usage: UDDTName string diff --git a/reference/fsharp-data-sql-ssdt-dacpacparser.html b/reference/fsharp-data-sql-ssdt-dacpacparser.html index becf5575..f8f33af2 100644 --- a/reference/fsharp-data-sql-ssdt-dacpacparser.html +++ b/reference/fsharp-data-sql-ssdt-dacpacparser.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-ssdt.html b/reference/fsharp-data-sql-ssdt.html index 68e750fa..17f06ffe 100644 --- a/reference/fsharp-data-sql-ssdt.html +++ b/reference/fsharp-data-sql-ssdt.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql-transactions-isolationlevel.html b/reference/fsharp-data-sql-transactions-isolationlevel.html index 953991a7..a726f7ae 100644 --- a/reference/fsharp-data-sql-transactions-isolationlevel.html +++ b/reference/fsharp-data-sql-transactions-isolationlevel.html @@ -67,7 +67,7 @@ @@ -269,8 +269,6 @@

    , IConvertible , - ISpanFormattable - , IFormattable
    @@ -310,7 +308,7 @@

    - +

    @@ -319,7 +317,7 @@

    -
    +
    Full Usage: Chaos @@ -352,7 +350,7 @@

    - +

    @@ -361,7 +359,7 @@

    -
    +
    Full Usage: DontCreateTransaction @@ -394,7 +392,7 @@

    - +

    @@ -403,7 +401,7 @@

    -
    +
    Full Usage: ReadCommitted @@ -436,7 +434,7 @@

    - +

    @@ -445,7 +443,7 @@

    -
    +
    Full Usage: ReadUncommitted @@ -478,7 +476,7 @@

    - +

    @@ -487,7 +485,7 @@

    -
    +
    Full Usage: RepeatableRead @@ -520,7 +518,7 @@

    - +

    @@ -529,7 +527,7 @@

    -
    +
    Full Usage: Serializable @@ -562,7 +560,7 @@

    - +

    @@ -571,7 +569,7 @@

    -
    +
    Full Usage: Snapshot @@ -604,7 +602,7 @@

    - +

    @@ -613,7 +611,7 @@

    -
    +
    Full Usage: Unspecified diff --git a/reference/fsharp-data-sql-transactions-transactionoptions.html b/reference/fsharp-data-sql-transactions-transactionoptions.html index 04a0c0ea..676e8dd5 100644 --- a/reference/fsharp-data-sql-transactions-transactionoptions.html +++ b/reference/fsharp-data-sql-transactions-transactionoptions.html @@ -67,7 +67,7 @@ @@ -309,7 +309,7 @@

    - +

    @@ -318,7 +318,7 @@

    -
    +
    Full Usage: IsolationLevel @@ -348,7 +348,7 @@

    - +

    @@ -357,7 +357,7 @@

    -
    +
    Full Usage: Timeout @@ -409,7 +409,7 @@

    - +

    @@ -418,7 +418,7 @@

    -
    +
    Full Usage: TransactionOptions.Default diff --git a/reference/fsharp-data-sql-transactions.html b/reference/fsharp-data-sql-transactions.html index 60d1619c..99bfb347 100644 --- a/reference/fsharp-data-sql-transactions.html +++ b/reference/fsharp-data-sql-transactions.html @@ -67,7 +67,7 @@ diff --git a/reference/fsharp-data-sql.html b/reference/fsharp-data-sql.html index 3198662e..48f8c74c 100644 --- a/reference/fsharp-data-sql.html +++ b/reference/fsharp-data-sql.html @@ -67,7 +67,7 @@ diff --git a/reference/global-expressionoptimizer.html b/reference/global-expressionoptimizer.html index cce80df6..c994b8fc 100644 --- a/reference/global-expressionoptimizer.html +++ b/reference/global-expressionoptimizer.html @@ -67,7 +67,7 @@ @@ -383,7 +383,7 @@

    - Does reductions just for a current node. + Do reductions just for a current node?

    @@ -515,7 +515,7 @@

    - +

    @@ -595,7 +595,7 @@

    - +

    @@ -675,7 +675,7 @@

    - +

    @@ -754,7 +754,7 @@

    - +

    diff --git a/reference/global.html b/reference/global.html index 7fb453c7..bb4a912d 100644 --- a/reference/global.html +++ b/reference/global.html @@ -67,7 +67,7 @@

    diff --git a/reference/index.html b/reference/index.html index d2fd9ae9..99725619 100644 --- a/reference/index.html +++ b/reference/index.html @@ -67,7 +67,7 @@