mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	优化 IFreeSql.Transaction 可嵌套连续使用,之前会死锁
This commit is contained in:
		@@ -2,7 +2,7 @@
 | 
			
		||||
 | 
			
		||||
	<PropertyGroup>
 | 
			
		||||
		<TargetFramework>netstandard2.0</TargetFramework>
 | 
			
		||||
		<Version>0.4.1</Version>
 | 
			
		||||
		<Version>0.4.1.2</Version>
 | 
			
		||||
		<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
			
		||||
		<Authors>YeXiangQin</Authors>
 | 
			
		||||
		<Description>FreeSql is the most convenient ORM in dotnet. It supports Mysql, Postgresql, SqlServer, Oracle and Sqlite.</Description>
 | 
			
		||||
 
 | 
			
		||||
@@ -48,6 +48,8 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
		public void TransactionPreRemoveCache(params string[] key) => PreRemove(key);
 | 
			
		||||
 | 
			
		||||
		public void BeginTransaction(TimeSpan timeout) {
 | 
			
		||||
			if (TransactionCurrentThread != null) return;
 | 
			
		||||
 | 
			
		||||
			int tid = Thread.CurrentThread.ManagedThreadId;
 | 
			
		||||
			Transaction2 tran = null;
 | 
			
		||||
			Object<DbConnection> conn = null;
 | 
			
		||||
 
 | 
			
		||||
@@ -388,7 +388,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
				_paramsSource.Clear();
 | 
			
		||||
				var colidx = 0;
 | 
			
		||||
				foreach (var col in _table.Columns.Values) {
 | 
			
		||||
					if (col.Attribute.IsIdentity == false && _ignore.ContainsKey(col.CsName) == false) {
 | 
			
		||||
					if (col.Attribute.IsIdentity == false && col.Attribute.IsVersion == false && _ignore.ContainsKey(col.CsName) == false) {
 | 
			
		||||
						if (colidx > 0) sb.Append(", ");
 | 
			
		||||
						sb.Append(_commonUtils.QuoteSqlName(col.Attribute.Name)).Append(" = ");
 | 
			
		||||
						var value = _table.Properties.TryGetValue(col.CsName, out var tryp) ? tryp.GetValue(_source.First()) : null;
 | 
			
		||||
@@ -414,7 +414,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
				_paramsSource.Clear();
 | 
			
		||||
				var colidx = 0;
 | 
			
		||||
				foreach (var col in _table.Columns.Values) {
 | 
			
		||||
					if (col.Attribute.IsIdentity == false && _ignore.ContainsKey(col.CsName) == false) {
 | 
			
		||||
					if (col.Attribute.IsIdentity == false && col.Attribute.IsVersion == false && _ignore.ContainsKey(col.CsName) == false) {
 | 
			
		||||
						if (colidx > 0) sb.Append(", ");
 | 
			
		||||
						sb.Append(_commonUtils.QuoteSqlName(col.Attribute.Name)).Append(" = ");
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user