diff --git a/index.json b/index.json index 4affce75..db777ee4 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":"Firebird \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.getHeadAsync \ngetHeadAsync \nAsyncOperations.getTryHeadAsync \ngetTryHeadAsync \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#getHeadAsync","title":"AsyncOperations.getHeadAsync","content":"AsyncOperations.getHeadAsync \ngetHeadAsync \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#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.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#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","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-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.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#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.ConnectionString \nConnectionString \nISqlDataContext.CommandTimeout \nCommandTimeout","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#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-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-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.DataContext \nDataContext \nSqlEntity.OnConflict \nOnConflict \nSqlEntity._State \n_State \nSqlEntity.ColumnValues \nColumnValues \nSqlEntity.Table \nTable","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#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#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#_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#Table","title":"SqlEntity.Table","content":"SqlEntity.Table \nTable \n","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-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.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#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","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-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.Count \nCount \nColumnLookup.IsEmpty \nIsEmpty \nColumnLookup.Values \nValues \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#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-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-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.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.Keys \nKeys \nSsdtUserDefinedDataType.Count \nCount \nSsdtUserDefinedDataType.IsEmpty \nIsEmpty \nSsdtUserDefinedDataType.Values \nValues \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#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-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-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","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/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\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\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\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\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 +[{"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":"Firebird \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.getHeadAsync \ngetHeadAsync \nAsyncOperations.getTryHeadAsync \ngetTryHeadAsync \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#getHeadAsync","title":"AsyncOperations.getHeadAsync","content":"AsyncOperations.getHeadAsync \ngetHeadAsync \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#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.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#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","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-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.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#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._State \n_State \nSqlEntity.Table \nTable \nSqlEntity.OnConflict \nOnConflict \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#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#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#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.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-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.DataReader \nDataReader \nDataReaderWithCommand.Command \nCommand","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#DataReader","title":"DataReaderWithCommand.DataReader","content":"DataReaderWithCommand.DataReader \nDataReader \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-mssqlserver.html","title":"MSSqlServer","content":"MSSqlServer \n \nMSSqlServer.getSchema \ngetSchema \nMSSqlServer.typeMappings \ntypeMappings \nMSSqlServer.findClrType \nfindClrType \nMSSqlServer.findDbType \nfindDbType \nMSSqlServer.createTypeMappings \ncreateTypeMappings \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#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","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-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.Item \nItem \nColumnLookup.Count \nCount \nColumnLookup.Keys \nKeys \nColumnLookup.IsEmpty \nIsEmpty \nColumnLookup.Values \nValues","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#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#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#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#Values","title":"ColumnLookup.Values","content":"ColumnLookup.Values \nValues \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.DbName \nDbName \nSprocName.FriendlyName \nFriendlyName \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#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#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#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.Item \nItem \nSsdtUserDefinedDataType.Count \nCount \nSsdtUserDefinedDataType.Keys \nKeys \nSsdtUserDefinedDataType.IsEmpty \nIsEmpty \nSsdtUserDefinedDataType.Values \nValues","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#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#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#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#Values","title":"SsdtUserDefinedDataType.Values","content":"SsdtUserDefinedDataType.Values \nValues \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","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/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\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\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\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\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