mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
debug Destructor #131
This commit is contained in:
parent
6a606a82af
commit
7d1f9b126f
@ -4,6 +4,7 @@ using System.Collections.Concurrent;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace FreeSql
|
namespace FreeSql
|
||||||
{
|
{
|
||||||
@ -200,11 +201,10 @@ namespace FreeSql
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
~DbContext() => this.Dispose();
|
~DbContext() => this.Dispose();
|
||||||
bool _isdisposed = false;
|
int _disposeCounter;
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_isdisposed) return;
|
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
|
||||||
_isdisposed = true;
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_actions.Clear();
|
_actions.Clear();
|
||||||
|
@ -7,6 +7,7 @@ using System.Collections.Concurrent;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace FreeSql
|
namespace FreeSql
|
||||||
{
|
{
|
||||||
@ -36,11 +37,10 @@ namespace FreeSql
|
|||||||
}
|
}
|
||||||
|
|
||||||
~DbSet() => this.Dispose();
|
~DbSet() => this.Dispose();
|
||||||
bool _isdisposed = false;
|
int _disposeCounter;
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_isdisposed) return;
|
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
|
||||||
_isdisposed = true;
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
this._dicUpdateTimes.Clear();
|
this._dicUpdateTimes.Clear();
|
||||||
|
@ -144,10 +144,7 @@ namespace FreeSql
|
|||||||
return _filters.TryGetValue(filterName, out var tryfi) ? tryfi.IsEnabled : false;
|
return _filters.TryGetValue(filterName, out var tryfi) ? tryfi.IsEnabled : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
~DataFilter()
|
~DataFilter() => this.Dispose();
|
||||||
{
|
|
||||||
this.Dispose();
|
|
||||||
}
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_filters.Clear();
|
_filters.Clear();
|
||||||
@ -169,10 +166,7 @@ namespace FreeSql
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
~FluentDataFilter()
|
~FluentDataFilter() => this.Dispose();
|
||||||
{
|
|
||||||
this.Dispose();
|
|
||||||
}
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_filters.Clear();
|
_filters.Clear();
|
||||||
|
@ -3,6 +3,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql
|
namespace FreeSql
|
||||||
@ -42,11 +43,10 @@ namespace FreeSql
|
|||||||
}
|
}
|
||||||
|
|
||||||
~BaseRepository() => this.Dispose();
|
~BaseRepository() => this.Dispose();
|
||||||
bool _isdisposed = false;
|
int _disposeCounter;
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_isdisposed) return;
|
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
|
||||||
_isdisposed = true;
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_dbsetPriv?.Dispose();
|
_dbsetPriv?.Dispose();
|
||||||
|
@ -105,18 +105,20 @@ namespace FreeSql
|
|||||||
|
|
||||||
public DbContext.EntityChangeReport EntityChangeReport { get; } = new DbContext.EntityChangeReport();
|
public DbContext.EntityChangeReport EntityChangeReport { get; } = new DbContext.EntityChangeReport();
|
||||||
|
|
||||||
~UnitOfWork()
|
~UnitOfWork() => this.Dispose();
|
||||||
{
|
int _disposeCounter;
|
||||||
this.Dispose();
|
|
||||||
}
|
|
||||||
bool _isdisposed = false;
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_isdisposed) return;
|
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
|
||||||
_isdisposed = true;
|
try
|
||||||
this.Rollback();
|
{
|
||||||
this.Close();
|
this.Rollback();
|
||||||
GC.SuppressFinalize(this);
|
this.Close();
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -120,14 +120,11 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
~AdoProvider()
|
~AdoProvider() => this.Dispose();
|
||||||
{
|
int _disposeCounter;
|
||||||
this.Dispose();
|
|
||||||
}
|
|
||||||
bool _isdisposed = false;
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_isdisposed) return;
|
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Transaction2[] trans = null;
|
Transaction2[] trans = null;
|
||||||
|
@ -10,6 +10,7 @@ using System.Linq;
|
|||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.Internal.CommonProvider
|
namespace FreeSql.Internal.CommonProvider
|
||||||
@ -38,11 +39,10 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
protected List<LambdaExpression> _whereCascadeExpression = new List<LambdaExpression>();
|
protected List<LambdaExpression> _whereCascadeExpression = new List<LambdaExpression>();
|
||||||
protected List<GlobalFilter.Item> _whereGlobalFilter;
|
protected List<GlobalFilter.Item> _whereGlobalFilter;
|
||||||
|
|
||||||
bool _isDisponse = false;
|
int _disposeCounter;
|
||||||
~Select0Provider()
|
~Select0Provider()
|
||||||
{
|
{
|
||||||
if (_isDisponse) return;
|
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
|
||||||
_isDisponse = false;
|
|
||||||
_where.Clear();
|
_where.Clear();
|
||||||
_params.Clear();
|
_params.Clear();
|
||||||
_tables.Clear();
|
_tables.Clear();
|
||||||
|
@ -5,6 +5,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace FreeSql.MySql
|
namespace FreeSql.MySql
|
||||||
{
|
{
|
||||||
@ -73,14 +74,11 @@ namespace FreeSql.MySql
|
|||||||
|
|
||||||
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
||||||
|
|
||||||
~MySqlProvider()
|
~MySqlProvider() => this.Dispose();
|
||||||
{
|
int _disposeCounter;
|
||||||
this.Dispose();
|
|
||||||
}
|
|
||||||
bool _isdisposed = false;
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_isdisposed) return;
|
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
|
||||||
(this.Ado as AdoProvider)?.Dispose();
|
(this.Ado as AdoProvider)?.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
using FreeSql.Internal;
|
using FreeSql.Internal;
|
||||||
using FreeSql.Internal.CommonProvider;
|
using FreeSql.Internal.CommonProvider;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Collections.Concurrent;
|
|
||||||
using System.Linq;
|
|
||||||
using FreeSql.Odbc.Default;
|
using FreeSql.Odbc.Default;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Concurrent;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace FreeSql.Odbc.Default
|
namespace FreeSql.Odbc.Default
|
||||||
{
|
{
|
||||||
@ -86,14 +87,11 @@ namespace FreeSql.Odbc.Default
|
|||||||
|
|
||||||
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
||||||
|
|
||||||
~OdbcProvider()
|
~OdbcProvider() => this.Dispose();
|
||||||
{
|
int _disposeCounter;
|
||||||
this.Dispose();
|
|
||||||
}
|
|
||||||
bool _isdisposed = false;
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_isdisposed) return;
|
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
(this.Ado as AdoProvider)?.Dispose();
|
(this.Ado as AdoProvider)?.Dispose();
|
||||||
|
@ -4,6 +4,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace FreeSql.Odbc.MySql
|
namespace FreeSql.Odbc.MySql
|
||||||
{
|
{
|
||||||
@ -51,14 +52,11 @@ namespace FreeSql.Odbc.MySql
|
|||||||
|
|
||||||
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
||||||
|
|
||||||
~OdbcMySqlProvider()
|
~OdbcMySqlProvider() => this.Dispose();
|
||||||
{
|
int _disposeCounter;
|
||||||
this.Dispose();
|
|
||||||
}
|
|
||||||
bool _isdisposed = false;
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_isdisposed) return;
|
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
|
||||||
(this.Ado as AdoProvider)?.Dispose();
|
(this.Ado as AdoProvider)?.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ using FreeSql.Internal.CommonProvider;
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace FreeSql.Odbc.Oracle
|
namespace FreeSql.Odbc.Oracle
|
||||||
{
|
{
|
||||||
@ -52,14 +53,11 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
|
|
||||||
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
||||||
|
|
||||||
~OdbcOracleProvider()
|
~OdbcOracleProvider() => this.Dispose();
|
||||||
{
|
int _disposeCounter;
|
||||||
this.Dispose();
|
|
||||||
}
|
|
||||||
bool _isdisposed = false;
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_isdisposed) return;
|
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
|
||||||
(this.Ado as AdoProvider)?.Dispose();
|
(this.Ado as AdoProvider)?.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
using FreeSql.Internal.CommonProvider;
|
using FreeSql.Internal.CommonProvider;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace FreeSql.Odbc.PostgreSQL
|
namespace FreeSql.Odbc.PostgreSQL
|
||||||
{
|
{
|
||||||
@ -49,14 +50,11 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
|
|
||||||
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
||||||
|
|
||||||
~OdbcPostgreSQLProvider()
|
~OdbcPostgreSQLProvider() => this.Dispose();
|
||||||
{
|
int _disposeCounter;
|
||||||
this.Dispose();
|
|
||||||
}
|
|
||||||
bool _isdisposed = false;
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_isdisposed) return;
|
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
|
||||||
(this.Ado as AdoProvider)?.Dispose();
|
(this.Ado as AdoProvider)?.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
using FreeSql.Internal.CommonProvider;
|
using FreeSql.Internal.CommonProvider;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace FreeSql.Odbc.SqlServer
|
namespace FreeSql.Odbc.SqlServer
|
||||||
{
|
{
|
||||||
@ -57,14 +58,11 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
|
|
||||||
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
||||||
|
|
||||||
~OdbcSqlServerProvider()
|
~OdbcSqlServerProvider() => this.Dispose();
|
||||||
{
|
int _disposeCounter;
|
||||||
this.Dispose();
|
|
||||||
}
|
|
||||||
bool _isdisposed = false;
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_isdisposed) return;
|
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
|
||||||
(this.Ado as AdoProvider)?.Dispose();
|
(this.Ado as AdoProvider)?.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ using FreeSql.Oracle.Curd;
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace FreeSql.Oracle
|
namespace FreeSql.Oracle
|
||||||
{
|
{
|
||||||
@ -47,14 +48,11 @@ namespace FreeSql.Oracle
|
|||||||
|
|
||||||
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
||||||
|
|
||||||
~OracleProvider()
|
~OracleProvider() => this.Dispose();
|
||||||
{
|
int _disposeCounter;
|
||||||
this.Dispose();
|
|
||||||
}
|
|
||||||
bool _isdisposed = false;
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_isdisposed) return;
|
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
|
||||||
(this.Ado as AdoProvider)?.Dispose();
|
(this.Ado as AdoProvider)?.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ using System.Data.Common;
|
|||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.NetworkInformation;
|
using System.Net.NetworkInformation;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace FreeSql.PostgreSQL
|
namespace FreeSql.PostgreSQL
|
||||||
{
|
{
|
||||||
@ -100,14 +101,11 @@ namespace FreeSql.PostgreSQL
|
|||||||
|
|
||||||
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
||||||
|
|
||||||
~PostgreSQLProvider()
|
~PostgreSQLProvider() => this.Dispose();
|
||||||
{
|
int _disposeCounter;
|
||||||
this.Dispose();
|
|
||||||
}
|
|
||||||
bool _isdisposed = false;
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_isdisposed) return;
|
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
|
||||||
(this.Ado as AdoProvider)?.Dispose();
|
(this.Ado as AdoProvider)?.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ using FreeSql.Internal.CommonProvider;
|
|||||||
using FreeSql.SqlServer.Curd;
|
using FreeSql.SqlServer.Curd;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace FreeSql.SqlServer
|
namespace FreeSql.SqlServer
|
||||||
{
|
{
|
||||||
@ -58,14 +59,11 @@ namespace FreeSql.SqlServer
|
|||||||
|
|
||||||
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
||||||
|
|
||||||
~SqlServerProvider()
|
~SqlServerProvider() => this.Dispose();
|
||||||
{
|
int _disposeCounter;
|
||||||
this.Dispose();
|
|
||||||
}
|
|
||||||
bool _isdisposed = false;
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_isdisposed) return;
|
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
|
||||||
(this.Ado as AdoProvider)?.Dispose();
|
(this.Ado as AdoProvider)?.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ using FreeSql.Sqlite.Curd;
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace FreeSql.Sqlite
|
namespace FreeSql.Sqlite
|
||||||
{
|
{
|
||||||
@ -46,14 +47,11 @@ namespace FreeSql.Sqlite
|
|||||||
|
|
||||||
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
|
||||||
|
|
||||||
~SqliteProvider()
|
~SqliteProvider() => this.Dispose();
|
||||||
{
|
int _disposeCounter;
|
||||||
this.Dispose();
|
|
||||||
}
|
|
||||||
bool _isdisposed = false;
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_isdisposed) return;
|
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
|
||||||
(this.Ado as AdoProvider)?.Dispose();
|
(this.Ado as AdoProvider)?.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user