- Notifications
You must be signed in to change notification settings - Fork68
A set of F# Type Providers for statically typed access to MS SQL database
License
fsprojects/FSharp.Data.SqlClient
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
This library exposes SQL Server Database objects in a type safe manner to F# code, by the mean ofType Providers
You can reference it in F# Interactive that ships with Visual Studio
#r"nuget: FSharp.Data.SqlClient"openFSharp.DataopenFSharp.Data.SqlClientlet [<Literal>]connectionString="Server=.;Database=AdventureWorks2012;Trusted_Connection=True;"typeMyCommand= SqlCommandProvider<"""selectdata.afrom(select 1 a union all select 2 union all select 3) datawheredata.a > @data""", connectionString>;;(new MyCommand(connectionString)).Execute(data=1)|> Seq.toArray|> printfn"%A"
dotnet fsi is not supported yet.
- Documentation
- Release Notes
- Contribution Guide Lines
- Gitter Chat Room
- FSharp.Data.SqlClient on nuget.org
Provides statically typed access to the parameters and result set of T-SQL command in idiomatic F# way(*).
openFSharp.Data[<Literal>]letconnectionString="Data Source=.;Initial Catalog=AdventureWorks2012;Integrated Security=True;TrustServerCertificate=true"// The query below retrieves top 3 sales representatives from North American region with YTD sales of more than one million.douse cmd=new SqlCommandProvider<" SELECT TOP(@topN) FirstName, LastName, SalesYTD FROM Sales.vSalesPerson WHERE CountryRegionName = @regionName AND SalesYTD > @salesMoreThan ORDER BY SalesYTD", connectionString>(connectionString) cmd.Execute(topN=3L, regionName="United States", salesMoreThan=1000000M)|> printfn"%A"
output
seq[("Pamela","Ansman-Wolfe",1352577.1325M);("David","Campbell",1573012.9383M);("Tete","Mensa-Annan",1576562.1966M)]
Exposes Tables, Stored Procedures, User-Defined Types and User-Defined Functions in F# code.
typeAdventureWorks= SqlProgrammabilityProvider<connectionString>douse cmd=new AdventureWorks.dbo.uspGetWhereUsedProductID(connectionString)for xin cmd.Execute( StartProductID=1, CheckDate= System.DateTime(2013,1,1))do//check for nullsmatch x.ProductAssemblyID, x.StandardCost, x.TotalQuantitywith| Some prodAsmId, Some cost, Some qty-> printfn"ProductAssemblyID:%i, StandardCost:%M, TotalQuantity:%M" prodAsmId cost qty|_->()
output
ProductAssemblyID:749, StandardCost:2171.2942, TotalQuantity:1.00ProductAssemblyID:750, StandardCost:2171.2942, TotalQuantity:1.00ProductAssemblyID:751, StandardCost:2171.2942, TotalQuantity:1.00
Let's say we need to retrieve number of orders shipped by a certain shipping method since specific date.
//by convention: first column is Name, second is ValuetypeShipMethod= SqlEnumProvider<" SELECT Name, ShipMethodID FROM Purchasing.ShipMethod ORDER BY ShipMethodID", connectionString>//Combine with SqlCommandProviderdouse cmd=new SqlCommandProvider<" SELECT COUNT(*) FROM Purchasing.PurchaseOrderHeader WHERE ShipDate > @shippedLaterThan AND ShipMethodID = @shipMethodId", connectionString, SingleRow=true>(connectionString)//overnight orders shipped since Jan 1, 2008 cmd.Execute( System.DateTime(2008,1,1), ShipMethod.``OVERNIGHT J-FAST``)|> printfn"%A"
output
Some(Some1085)
typeSampleCommand= SqlFile<"sampleCommand.sql">typeSampleCommandRelative= SqlFile<"sampleCommand.sql","MySqlFolder">use cmd1=new SqlCommandProvider<SampleCommand.Text, ConnectionStrings.AdventureWorksNamed>()use cmd2=new SqlCommandProvider<SampleCommandRelative.Text, ConnectionStrings.AdventureWorksNamed>()
More information can be found in thedocumentation.
| Windows | Linux | NuGet |
|---|---|---|
The default maintainer account for projects under "fsprojects" is@fsprojectsgit - F# Community Project Incubation Space (repo management)
Thanks Jetbrains for their open source license program and providing their tool.
About
A set of F# Type Providers for statically typed access to MS SQL database
Topics
Resources
License
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.