Skip to content

Commit 6e8d725

Browse files
committed
- 修复 UseGenerateCommandParameterWithLambda 子查询并发 bug;#1155
1 parent 4549bf4 commit 6e8d725

File tree

3 files changed

+23
-11
lines changed

3 files changed

+23
-11
lines changed

Examples/base_entity/Program.cs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,12 +277,31 @@ class TestComment01 : IDeleteSoft
277277
public bool IsDeleted { get; set; }
278278
}
279279

280+
static void TestExp(IFreeSql fsql)
281+
{
282+
var tasks = new List<Task>();
283+
284+
for (var a = 0; a < 1000; a++)
285+
{
286+
var task = Task.Run(async () =>
287+
{
288+
var name = "123";
289+
var result = await fsql.Select<Rsbasedoc2>()
290+
.Where(t => t.Name == name
291+
&& fsql.Select<Rsbasedoc2>().Any(t2 => t2.Id == t.Id)).ToListAsync();
292+
});
293+
tasks.Add(task);
294+
}
295+
Task.WaitAll(tasks.ToArray());
296+
}
297+
280298
static void Main(string[] args)
281299
{
282300
#region 初始化 IFreeSql
283301
var fsql = new FreeSql.FreeSqlBuilder()
284302
.UseAutoSyncStructure(true)
285303
.UseNoneCommandParameter(true)
304+
.UseGenerateCommandParameterWithLambda(true)
286305

287306
.UseConnectionString(FreeSql.DataType.Sqlite, "data source=test1.db;max pool size=5")
288307
//.UseSlave("data source=test1.db", "data source=test2.db", "data source=test3.db", "data source=test4.db")
@@ -294,7 +313,7 @@ static void Main(string[] args)
294313

295314
.UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=2")
296315

297-
//.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true")
316+
.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true")
298317

299318
//.UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=192.168.164.10;Port=5432;Username=postgres;Password=123456;Database=tedb;Pooling=true;Maximum Pool Size=2")
300319
//.UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=192.168.164.10;Port=5432;Username=postgres;Password=123456;Database=toc;Pooling=true;Maximum Pool Size=2")
@@ -325,6 +344,8 @@ static void Main(string[] args)
325344
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
326345
#endregion
327346

347+
TestExp(fsql);
348+
328349
fsql.CodeFirst.GetTableByEntity(typeof(TestComment01));
329350

330351
fsql.Select<TUserImg>();

FreeSql.DbContext/FreeSql.DbContext.xml

Lines changed: 0 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

FreeSql/Internal/CommonProvider/SelectProvider/Select0Provider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public abstract partial class Select0Provider
5151
{
5252
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
5353
_where.Clear();
54-
_params.Clear();
54+
//_params.Clear(); 子查询与主查询共享,并发导致错误清除了主查询参数化信息 https://github.com/dotnetcore/FreeSql/issues/1155
5555
_tables.Clear();
5656
_tableRules.Clear();
5757
_join.Clear();

0 commit comments

Comments
 (0)