diff --git a/paket.dependencies b/paket.dependencies
index 7739225d5..78f2964f1 100644
--- a/paket.dependencies
+++ b/paket.dependencies
@@ -31,9 +31,6 @@ github fsharp/FAKE modules/Octokit/Octokit.fsx
group SourceFiles
source https://nuget.org/api/v2
- github fsprojects/FSharp.TypeProviders.SDK src/AssemblyReader.fs
- github fsprojects/FSharp.TypeProviders.SDK src/AssemblyReaderReflection.fs
- github fsprojects/FSharp.TypeProviders.SDK src/ProvidedTypesContext.fs
github fsprojects/FSharp.TypeProviders.SDK src/ProvidedTypes.fsi
github fsprojects/FSharp.TypeProviders.SDK src/ProvidedTypes.fs
github Thorium/Linq.Expression.Optimizer src/Code/ExpressionOptimizer.fs
diff --git a/paket.lock b/paket.lock
index cfc8225da..42e654f5d 100644
--- a/paket.lock
+++ b/paket.lock
@@ -1465,11 +1465,8 @@ GROUP SourceFiles
GITHUB
remote: fsprojects/FSharp.TypeProviders.SDK
- src/AssemblyReader.fs (c372debaa7ef4febfe16d98dec765d74640bbe82)
- src/AssemblyReaderReflection.fs (c372debaa7ef4febfe16d98dec765d74640bbe82)
- src/ProvidedTypes.fs (c372debaa7ef4febfe16d98dec765d74640bbe82)
- src/ProvidedTypes.fsi (c372debaa7ef4febfe16d98dec765d74640bbe82)
- src/ProvidedTypesContext.fs (c372debaa7ef4febfe16d98dec765d74640bbe82)
+ src/ProvidedTypes.fs (e0436b11faed9e7938b3c90d874a535f94311b87)
+ src/ProvidedTypes.fsi (e0436b11faed9e7938b3c90d874a535f94311b87)
remote: Thorium/Linq.Expression.Optimizer
src/Code/ExpressionOptimizer.fs (297f7d9f75c7d8d86b1d00bae0b535d8e48f572d)
GROUP Standard
diff --git a/src/SQLProvider.Standard/SQLProvider.Standard.fsproj b/src/SQLProvider.Standard/SQLProvider.Standard.fsproj
index f90840f9f..b85e5fb9e 100644
--- a/src/SQLProvider.Standard/SQLProvider.Standard.fsproj
+++ b/src/SQLProvider.Standard/SQLProvider.Standard.fsproj
@@ -22,15 +22,6 @@
ProvidedTypes.fs
-
- AssemblyReader.fs
-
-
- AssemblyReaderReflection.fs
-
-
- ProvidedTypesContext.fs
-
ExpressionOptimizer.fs
diff --git a/src/SQLProvider/SqlDesignTime.fs b/src/SQLProvider/SqlDesignTime.fs
index 81d991641..ab3fccc54 100644
--- a/src/SQLProvider/SqlDesignTime.fs
+++ b/src/SQLProvider/SqlDesignTime.fs
@@ -97,7 +97,7 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
| _ -> " for schema or database " + owner + ". Connection: " + connnectionString
let possibleError = "Tables not found" + hint
let errInfo =
- ctxt.ProvidedProperty("PossibleError", typeof, fun _ -> <@@ possibleError @@>)
+ ctxt.ProvidedProperty("PossibleError", typeof, getterCode = fun _ -> <@@ possibleError @@>)
errInfo.AddXmlDocDelayed(fun () ->
this.Invalidate()
"You have possible configuration error. \r\n " + possibleError)
@@ -143,7 +143,7 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
let ty = ctxt.ProvidedTypeDefinition(name, None, true )
ty.AddMember(ctxt.ProvidedConstructor([ctxt.ProvidedParameter("sqlService", typeof)]))
individualsTypes.Add ty
- Some(col.Key,(ty,ctxt.ProvidedProperty(sprintf "As %s" (buildFieldName col.Key),ty, fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext)@@> ))))
+ Some(col.Key,(ty,ctxt.ProvidedProperty(sprintf "As %s" (buildFieldName col.Key),ty, getterCode = fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext)@@> ))))
|> Map.ofSeq
let rec (|FixedType|_|) (o:obj) =
@@ -186,13 +186,13 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
colDefinition.AddMemberDelayed(fun() ->
ctxt.ProvidedProperty( sprintf "%s, %s" (prettyPrint pkValue) (prettyPrint colValue)
, tableTypeDef
- , getterCode
+ , getterCode = getterCode
)
)
// return the primary key property
Some <| ctxt.ProvidedProperty(prettyPrint pkValue
, tableTypeDef
- , getterCode
+ , getterCode = getterCode
)
| _ -> None)
|> Array.append( propertyMap |> Map.toArray |> Array.map (snd >> snd))
@@ -229,13 +229,13 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
let name = c.Name
let prop =
ctxt.ProvidedProperty(
- SchemaProjections.buildFieldName(name),propTy,
- (fun (args:Expr list) ->
+ SchemaProjections.buildFieldName(name),propTy,
+ getterCode = (fun (args:Expr list) ->
let meth = if nullable then typeof.GetMethod("GetColumnOption").MakeGenericMethod([|ty|])
else typeof.GetMethod("GetColumn").MakeGenericMethod([|ty|])
Expr.Call(args.[0],meth,[Expr.Value name])
),
- (fun (args:Expr list) ->
+ setterCode = (fun (args:Expr list) ->
if nullable then
let meth = typeof.GetMethod("SetColumnOption").MakeGenericMethod([|ty|])
Expr.Call(args.[0],meth,[Expr.Value name;args.[1]])
@@ -260,7 +260,7 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
let ty = ty.MakeGenericType tt
let constraintName = r.Name
let niceName = getRelationshipName (sprintf "%s by %s" r.ForeignTable r.PrimaryKey)
- let prop = ctxt.ProvidedProperty(niceName,ty, fun args ->
+ let prop = ctxt.ProvidedProperty(niceName,ty, getterCode = fun args ->
let pt = r.PrimaryTable
let pk = r.PrimaryKey
let ft = r.ForeignTable
@@ -275,7 +275,7 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
let ty = ty.MakeGenericType tt
let constraintName = r.Name
let niceName = getRelationshipName (sprintf "%s by %s" r.PrimaryTable r.PrimaryKey)
- let prop = ctxt.ProvidedProperty(niceName,ty, fun args ->
+ let prop = ctxt.ProvidedProperty(niceName,ty, getterCode = fun args ->
let pt = r.PrimaryTable
let pk = r.PrimaryKey
let ft = r.ForeignTable
@@ -315,10 +315,10 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
let prop =
ctxt.ProvidedProperty(
name,ty,
- (fun (args:Expr list) ->
+ getterCode = (fun (args:Expr list) ->
let meth = typeof.GetMethod("GetColumn").MakeGenericMethod([|ty|])
Expr.Call(args.[0],meth,[Expr.Value name])),
- (fun (args:Expr list) ->
+ setterCode = (fun (args:Expr list) ->
let meth = typeof.GetMethod("SetColumn").MakeGenericMethod([|typeof|])
Expr.Call(args.[0],meth,[Expr.Value name;Expr.Coerce(args.[1], typeof)])))
rt.AddMember prop)
@@ -327,13 +327,13 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
let retColsExpr =
QuotationHelpers.arrayExpr retCols |> snd
let asyncRet = typedefof>.MakeGenericType([| returnType |])
- [ctxt.ProvidedMethod("Invoke", parameters, returnType, QuotationHelpers.quoteRecord runtimeSproc (fun args var ->
+ [ctxt.ProvidedMethod("Invoke", parameters, returnType, invokeCode = QuotationHelpers.quoteRecord runtimeSproc (fun args var ->
<@@ (((%%args.[0] : obj):?>ISqlDataContext)).CallSproc(%%var, %%retColsExpr, %%Expr.NewArray(typeof,List.map(fun e -> Expr.Coerce(e,typeof)) args.Tail)) @@>));
- ctxt.ProvidedMethod("InvokeAsync", parameters, asyncRet, QuotationHelpers.quoteRecord runtimeSproc (fun args var ->
+ ctxt.ProvidedMethod("InvokeAsync", parameters, asyncRet, invokeCode = QuotationHelpers.quoteRecord runtimeSproc (fun args var ->
<@@ (((%%args.[0] : obj):?>ISqlDataContext)).CallSprocAsync(%%var, %%retColsExpr, %%Expr.NewArray(typeof,List.map(fun e -> Expr.Coerce(e,typeof)) args.Tail)) @@>))]
)
- ctxt.ProvidedProperty(SchemaProjections.buildSprocName(sproc.Name.ProcName), resultType, (fun args -> <@@ ((%%args.[0] : obj) :?>ISqlDataContext) @@>) )
+ ctxt.ProvidedProperty(SchemaProjections.buildSprocName(sproc.Name.ProcName), resultType, getterCode = (fun args -> <@@ ((%%args.[0] : obj) :?>ISqlDataContext) @@>) )
let rec walkSproc con (path:string list) (parent:ProvidedTypeDefinition option) (createdTypes:Map) (sproc:Sproc) =
@@ -353,7 +353,7 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
let path = (path @ [typeName])
let typ = ctxt.ProvidedTypeDefinition(typeName, None, true)
parent.AddMember(typ)
- parent.AddMember(ctxt.ProvidedProperty(SchemaProjections.nicePascalName typeName, typ, fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext) @@>))
+ parent.AddMember(ctxt.ProvidedProperty(SchemaProjections.nicePascalName typeName, typ, getterCode = fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext) @@>))
typ.AddMember(ctxt.ProvidedConstructor([ctxt.ProvidedParameter("sqlDataContext", typeof)]))
typ.AddMembersDelayed(fun () -> Sql.ensureOpen con; (packageDefn.Sprocs con) |> List.map (generateSprocMethod typ con))
createdTypes.Add(path, typ)
@@ -407,7 +407,7 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
|> Seq.toList
// Create: unit -> SqlEntity
- let create1 = ctxt.ProvidedMethod("Create", [], entityType, fun args ->
+ let create1 = ctxt.ProvidedMethod("Create", [], entityType, invokeCode = fun args ->
<@@
let e = ((%%args.[0] : obj ):?> IWithDataContext).DataContext.CreateEntity(key)
e._State <- Created
@@ -416,7 +416,7 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
@@> )
// Create: ('a * 'b * 'c * ...) -> SqlEntity
- let create2 = ctxt.ProvidedMethod("Create", normalParameters, entityType, fun args ->
+ let create2 = ctxt.ProvidedMethod("Create", normalParameters, entityType, invokeCode = fun args ->
let dc = args.Head
let args = args.Tail
@@ -436,7 +436,7 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
@@>)
// Create: (data : seq) -> SqlEntity
- let create3 = ctxt.ProvidedMethod("Create", [ctxt.ProvidedParameter("data",typeof< (string*obj) seq >)] , entityType, fun args ->
+ let create3 = ctxt.ProvidedMethod("Create", [ctxt.ProvidedParameter("data",typeof< (string*obj) seq >)] , entityType, invokeCode = fun args ->
let dc = args.[0]
let data = args.[1]
<@@
@@ -457,7 +457,7 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
let template=
let cols = normalParameters |> Seq.map(fun c -> c.Name )
"Create(" + String.Join(", ", cols) + ")"
- let create4 = ctxt.ProvidedMethod(template, normalParameters, entityType, fun args ->
+ let create4 = ctxt.ProvidedMethod(template, normalParameters, entityType, invokeCode = fun args ->
let dc = args.Head
let args = args.Tail
let columns =
@@ -479,7 +479,7 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
// This genertes a template.
seq {
- let individuals = ctxt.ProvidedProperty("Individuals",Seq.head it, fun args -> <@@ ((%%args.[0] : obj ):?> IWithDataContext ).DataContext @@> )
+ let individuals = ctxt.ProvidedProperty("Individuals",Seq.head it, getterCode = fun args -> <@@ ((%%args.[0] : obj ):?> IWithDataContext ).DataContext @@> )
individuals.AddXmlDoc("Get individual items from the table. Requires single primary key.")
yield individuals :> MemberInfo
if normalParameters.Length > 0 then yield create2 :> MemberInfo
@@ -489,7 +489,7 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
)
let buildTableName = SchemaProjections.buildTableName >> caseInsensitivityCheck
- let prop = ctxt.ProvidedProperty(buildTableName(ct.Name),ct, fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext).CreateEntities(key) @@> )
+ let prop = ctxt.ProvidedProperty(buildTableName(ct.Name),ct, getterCode = fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext).CreateEntities(key) @@> )
prop.AddXmlDocDelayed (fun () ->
let details = prov.GetTableDescription(con, ct.Name).Replace("<","<").Replace(">",">")
@@ -503,20 +503,20 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
//yield prop :> MemberInfo
yield! Seq.cast it
- yield! containers |> Seq.map(fun p -> ctxt.ProvidedProperty(p.Name.Replace("Container",""), p, fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext) @@>)) |> Seq.cast
- let submit = ctxt.ProvidedMethod("SubmitUpdates",[],typeof, fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext).SubmitPendingChanges() @@>)
+ yield! containers |> Seq.map(fun p -> ctxt.ProvidedProperty(p.Name.Replace("Container",""), p, getterCode = fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext) @@>)) |> Seq.cast
+ let submit = ctxt.ProvidedMethod("SubmitUpdates",[],typeof, invokeCode = fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext).SubmitPendingChanges() @@>)
submit.AddXmlDoc("Save changes to data-source. May throws errors: To deal with non-saved items use GetUpdates() and ClearUpdates().")
yield submit :> MemberInfo
- let submitAsync = ctxt.ProvidedMethod("SubmitUpdatesAsync",[],typeof>, fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext).SubmitPendingChangesAsync() @@>)
+ let submitAsync = ctxt.ProvidedMethod("SubmitUpdatesAsync",[],typeof>, invokeCode = fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext).SubmitPendingChangesAsync() @@>)
submitAsync.AddXmlDoc("Save changes to data-source. May throws errors: Use Async.Catch and to deal with non-saved items use GetUpdates() and ClearUpdates().")
yield submitAsync :> MemberInfo
- yield ctxt.ProvidedMethod("GetUpdates",[],typeof, fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext).GetPendingEntities() @@>) :> MemberInfo
- yield ctxt.ProvidedMethod("ClearUpdates",[],typeof, fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext).ClearPendingChanges() @@>) :> MemberInfo
- yield ctxt.ProvidedMethod("CreateConnection",[],typeof, fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext).CreateConnection() @@>) :> MemberInfo
+ yield ctxt.ProvidedMethod("GetUpdates",[],typeof, invokeCode = fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext).GetPendingEntities() @@>) :> MemberInfo
+ yield ctxt.ProvidedMethod("ClearUpdates",[],typeof, invokeCode = fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext).ClearPendingChanges() @@>) :> MemberInfo
+ yield ctxt.ProvidedMethod("CreateConnection",[],typeof, invokeCode = fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext).CreateConnection() @@>) :> MemberInfo
] @ [
for KeyValue(name,pt) in schemaMap do
yield pt :> MemberInfo
- yield ctxt.ProvidedProperty(SchemaProjections.buildTableName(name),pt, fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext) @@> ) :> MemberInfo
+ yield ctxt.ProvidedProperty(SchemaProjections.buildTableName(name),pt, getterCode = fun args -> <@@ ((%%args.[0] : obj) :?> ISqlDataContext) @@> ) :> MemberInfo
])
let referencedAssemblyExpr = QuotationHelpers.arrayExpr config.ReferencedAssemblies |> snd
@@ -560,41 +560,6 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
[constr; respath; transopt;cmdTimeout], (fun args ->
let runtimeAssembly = config.ResolutionFolder
<@@ SqlDataContext(rootTypeName, %%args.[0], dbVendor, %%args.[1], %%referencedAssemblyExpr, runtimeAssembly, owner, caseSensitivity, tableNames, odbcquote, sqliteLibrary, %%args.[2], (Some %%args.[3])) :> ISqlDataContext @@>)
-#if NETSTANDARD
- [], (fun (_:Expr list) ->
- let runtimePath = config.ResolutionFolder
- let runtimeAssembly = config.ResolutionFolder
- <@@ SqlDataContext(rootTypeName, connnectionString, dbVendor, resolutionPath, %%referencedAssemblyExpr, runtimeAssembly, owner, caseSensitivity, tableNames, odbcquote, sqliteLibrary, %%defaultTransactionOptionsExpr, None) :> ISqlDataContext @@>);
- [transopt], (fun args ->
- let runtimePath = config.ResolutionFolder
- let runtimeAssembly = config.ResolutionFolder
- <@@ SqlDataContext(rootTypeName, connnectionString, dbVendor, resolutionPath, %%referencedAssemblyExpr, runtimeAssembly, owner, caseSensitivity, tableNames, odbcquote, sqliteLibrary, %%args.[0], None) :> ISqlDataContext @@>);
- [cmdTimeout], (fun args ->
- let runtimePath = config.ResolutionFolder
- let runtimeAssembly = config.ResolutionFolder
- <@@ SqlDataContext(rootTypeName, connnectionString, dbVendor, resolutionPath, %%referencedAssemblyExpr, runtimeAssembly, owner, caseSensitivity, tableNames, odbcquote, sqliteLibrary, %%defaultTransactionOptionsExpr, (Some %%args.[0])) :> ISqlDataContext @@>);
- [transopt;cmdTimeout], (fun args ->
- let runtimePath = config.ResolutionFolder
- let runtimeAssembly = config.ResolutionFolder
- <@@ SqlDataContext(rootTypeName, connnectionString, dbVendor, resolutionPath, %%referencedAssemblyExpr, runtimeAssembly, owner, caseSensitivity, tableNames, odbcquote, sqliteLibrary, %%args.[0], (Some %%args.[1])) :> ISqlDataContext @@>);
-#endif
- ]
-
- yield!
- crossTargetParameterCombinations |> Seq.map(fun (parmArr, invoker) ->
- let providerParams = parmArr |> List.map(fun (pname, _, ptype) -> ctxt.ProvidedParameter(pname, ptype))
- let meth =
- ctxt.ProvidedMethod("GetDataContext", providerParams, serviceType, invoker, true)
- let xmlComment =
- let all = parmArr |> List.map(fun (pname, xmlInfo, _) -> "" + xmlInfo + "") |> List.toArray
- String.Join("", all)
- meth.AddXmlDoc ("Returns an instance of the SQL Provider using the static parameters" + xmlComment)
- meth
- )
-
-#if !NETSTANDARD
- // Todo: Find a way to move tryGetConnectionString lambda to cross-targetting type provider
- let parameterCombinations = [
[], (fun (_:Expr list) ->
let runtimePath = config.ResolutionFolder
let runtimeAssembly = config.ResolutionFolder
@@ -630,18 +595,16 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
]
yield!
- parameterCombinations |> Seq.map(fun (parmArr, invoker) ->
- // Note: This is not supported by cross-targetting typeprovider.
- let providerParams = parmArr |> List.map(fun (pname, _, ptype) -> ProvidedParameter(pname, ptype))
- let meth =
- ProvidedMethod("GetDataContext", providerParams, serviceType, IsStaticMethod = true, InvokeCode = invoker)
+ crossTargetParameterCombinations |> Seq.map(fun (parmArr, invoker) ->
+ let providerParams = parmArr |> List.map(fun (pname, _, ptype) -> ctxt.ProvidedParameter(pname, ptype))
+ let meth =
+ ctxt.ProvidedMethod("GetDataContext", providerParams, serviceType, isStatic = true, invokeCode = invoker)
let xmlComment =
let all = parmArr |> List.map(fun (pname, xmlInfo, _) -> "" + xmlInfo + "") |> List.toArray
String.Join("", all)
meth.AddXmlDoc ("Returns an instance of the SQL Provider using the static parameters" + xmlComment)
meth
)
-#endif
])
if (dbVendor <> DatabaseProviderTypes.MSACCESS) then con.Close()
rootType
diff --git a/src/SQLProvider/SqlProvider.fsproj b/src/SQLProvider/SqlProvider.fsproj
index 28d316666..84ff46ae9 100644
--- a/src/SQLProvider/SqlProvider.fsproj
+++ b/src/SQLProvider/SqlProvider.fsproj
@@ -59,15 +59,6 @@
ProvidedTypes.fs
-
- AssemblyReader.fs
-
-
- AssemblyReaderReflection.fs
-
-
- ProvidedTypesContext.fs
-
ExpressionOptimizer.fs