Comments (6)
Ok - I thought I had some connection managing code in the design-time stuff, but perhaps not. It's odd this has not been encountered up until now though. I will have a look at this later today, thanks
from sqlprovider.
Thanks. If you need/want any help I'm happy to build and test any patches.
from sqlprovider.
As a work around I'm caching IDbConnections in createTypes. It should probably be keyed on provider type as well as connection string but the following works for me:
diff --git a/src/SQLProvider/SqlDesignTime.fs b/src/SQLProvider/SqlDesignTime.fs
index 64b41b0..840b502 100644
--- a/src/SQLProvider/SqlDesignTime.fs
+++ b/src/SQLProvider/SqlDesignTime.fs
@@ -29,11 +29,11 @@ type SqlTypeProvider(config: TypeProviderConfig) as this =
let sqlRuntimeInfo = SqlRuntimeInfo(config)
let ns = "FSharp.Data.Sql";
let asm = Assembly.GetExecutingAssembly()
+ let connections = System.Collections.Concurrent.ConcurrentDictionary<string,IDbConnection>()
let createTypes(conString,dbVendor,resolutionPath,individualsAmount,useOptionTypes,owner, rootTypeName) =
let prov = Common.Utilities.createSqlProvider dbVendor resolutionPath owner
- let con = prov.CreateConnection conString
- con.Open()
+ let con = connections.GetOrAdd(conString, (fun cs -> let con = prov.CreateConnection cs in con.Open(); con))
prov.CreateTypeMappings con
let tables = lazy prov.GetTables con
from sqlprovider.
This should hopefully be fixed now within here fba62ce
I changed the connection life cycles to be much more explicit in general - plus there was a key connection.Close() missing from the design-time code which is likely what was causing your issue. Please give it a go and let me know you get on, I made massive changes here to fix other stuff as well so all testing feedback is much appreciated, thanks!
from sqlprovider.
I ran into an issue when using count that the connection wasn't open. My commit Frassle@08134e1 seems to have fixed it.
The issue with too many connections does seem to have been fixed though :)
from sqlprovider.
Ahh, thanks, good shout. I missed that one. I have remade that change my side as it's just the single line. Let me know if you run into any other issues.
from sqlprovider.
Related Issues (20)
- [Microsoft,System].Data.SqlClient is not supported on this platform HOT 17
- Issue with connecting to PostgreSQL database HOT 1
- MSSQL stored procedures does not correctly works with schemas
- SQLProvider + PostgreSql works with Rider and VSCode but not visual studio 2022
- Incorrect FROM statement is produced when a table name contains periods HOT 2
- [Question] How to use Pragma with SQLITE? HOT 6
- Simple group by query with postgresql causes doubling up of double quotes when using double quoted declared fields HOT 3
- OnConflict implementation for SQLite provider uses wrong feature of SQLite HOT 3
- `SqlRuntime.DataContext.addCache` timeout on first query when application starts HOT 8
- Auto-generate types by `dotnet publish` time HOT 3
- dotnet 8.0.100-preview.6.23330.14 error. HOT 12
- Performance in SQL Server when comparing `varchar` column against `string` parameter HOT 23
- Is it possible to pull down a partial row and then update it? HOT 1
- Migration guide to 1.3.x HOT 3
- Typeprovider not working when compiled with dotnet build HOT 11
- Could not load file or assembly 'Microsoft.Extensions.Logging.Abstractions, Version=8.0.0.0 HOT 24
- OnConflict.Update ignores None/ValueNone values when using DatabaseProviderTypes.POSTGRESQL
- SQLite Provider using Microsoft.Data.Sqlite library does not perform updates transactionally HOT 7
- SQLite provider ResolutionPath fail HOT 8
- Support for DuckDB HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sqlprovider.