This commit is contained in:
28810
2020-01-20 01:48:41 +08:00
parent c64deb3d20
commit c89e4f9b20
7 changed files with 237 additions and 283 deletions

View File

@ -4,6 +4,7 @@ using SafeObjectPool;
using System;
using System.Collections;
using System.Data.Common;
using System.Data.SQLite;
using System.Text;
using System.Threading;
@ -18,6 +19,10 @@ namespace FreeSql.Sqlite
if (connectionFactory != null)
{
MasterPool = new FreeSql.Internal.CommonProvider.DbConnectionPool(DataType.Sqlite, connectionFactory);
using (var conn = MasterPool.Get())
{
_CreateCommandConnection = conn.Value;
}
return;
}
if (!string.IsNullOrEmpty(masterConnectionString))
@ -57,9 +62,11 @@ namespace FreeSql.Sqlite
return string.Concat("'", param.ToString().Replace("'", "''"), "'");
}
DbConnection _CreateCommandConnection;
protected override DbCommand CreateCommand()
{
return AdonetPortable.GetSqliteCommand();
if (_CreateCommandConnection != null) return _CreateCommandConnection.CreateCommand();
return new SQLiteCommand();
}
protected override void ReturnConnection(IObjectPool<DbConnection> pool, Object<DbConnection> conn, Exception ex)

View File

@ -4,6 +4,7 @@ using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SQLite;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
@ -34,7 +35,7 @@ namespace FreeSql.Sqlite
public void Return(Object<DbConnection> obj, Exception exception, bool isRecreate = false)
{
if (exception != null && AdonetPortable.IsSqliteException(exception))
if (exception != null && exception is SQLiteException)
{
try { if (obj.Value.Ping() == false) obj.Value.OpenAndAttach(policy.Attaches); } catch { base.SetUnavailable(exception); }
}
@ -121,7 +122,7 @@ namespace FreeSql.Sqlite
public DbConnection OnCreate()
{
var conn = AdonetPortable.GetSqliteConnection(_connectionString);
var conn = new SQLiteConnection(_connectionString);
return conn;
}