- 修复 UseGenerateCommandParameterWithLambda 子查询并发 bug;#1155

This commit is contained in:
2881099 2022-06-13 19:38:23 +08:00
parent 4549bf446c
commit 6e8d72513f
3 changed files with 23 additions and 11 deletions

View File

@ -277,12 +277,31 @@ namespace base_entity
public bool IsDeleted { get; set; }
}
static void TestExp(IFreeSql fsql)
{
var tasks = new List<Task>();
for (var a = 0; a < 1000; a++)
{
var task = Task.Run(async () =>
{
var name = "123";
var result = await fsql.Select<Rsbasedoc2>()
.Where(t => t.Name == name
&& fsql.Select<Rsbasedoc2>().Any(t2 => t2.Id == t.Id)).ToListAsync();
});
tasks.Add(task);
}
Task.WaitAll(tasks.ToArray());
}
static void Main(string[] args)
{
#region IFreeSql
var fsql = new FreeSql.FreeSqlBuilder()
.UseAutoSyncStructure(true)
.UseNoneCommandParameter(true)
.UseGenerateCommandParameterWithLambda(true)
.UseConnectionString(FreeSql.DataType.Sqlite, "data source=test1.db;max pool size=5")
//.UseSlave("data source=test1.db", "data source=test2.db", "data source=test3.db", "data source=test4.db")
@ -294,7 +313,7 @@ namespace base_entity
.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")
//.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true")
.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true")
//.UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=192.168.164.10;Port=5432;Username=postgres;Password=123456;Database=tedb;Pooling=true;Maximum Pool Size=2")
//.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 @@ namespace base_entity
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
#endregion
TestExp(fsql);
fsql.CodeFirst.GetTableByEntity(typeof(TestComment01));
fsql.Select<TUserImg>();

View File

@ -795,14 +795,5 @@
<param name="that"></param>
<returns></returns>
</member>
<member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
<summary>
批量注入 Repository可以参考代码自行调整
</summary>
<param name="services"></param>
<param name="globalDataFilter"></param>
<param name="assemblies"></param>
<returns></returns>
</member>
</members>
</doc>

View File

@ -51,7 +51,7 @@ namespace FreeSql.Internal.CommonProvider
{
if (Interlocked.Increment(ref _disposeCounter) != 1) return;
_where.Clear();
_params.Clear();
//_params.Clear(); 子查询与主查询共享,并发导致错误清除了主查询参数化信息 https://github.com/dotnetcore/FreeSql/issues/1155
_tables.Clear();
_tableRules.Clear();
_join.Clear();