mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32:50 +08:00
parent
4d23d331bc
commit
b320d084fa
@ -10,7 +10,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Version>3.2.601</Version>
|
<Version>3.2.602</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -159,6 +159,13 @@ namespace base_entity
|
|||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class CommandTimeoutCascade : IDisposable
|
||||||
|
{
|
||||||
|
public static AsyncLocal<int> _asyncLocalTimeout = new AsyncLocal<int>();
|
||||||
|
public CommandTimeoutCascade(int timeout) => _asyncLocalTimeout.Value = timeout;
|
||||||
|
public void Dispose() => _asyncLocalTimeout.Value = 0;
|
||||||
|
}
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
#region 初始化 IFreeSql
|
#region 初始化 IFreeSql
|
||||||
@ -201,6 +208,21 @@ namespace base_entity
|
|||||||
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
fsql.Aop.CommandBefore += (_, e) =>
|
||||||
|
{
|
||||||
|
if (CommandTimeoutCascade._asyncLocalTimeout.Value > 0)
|
||||||
|
e.Command.CommandTimeout = CommandTimeoutCascade._asyncLocalTimeout.Value;
|
||||||
|
};
|
||||||
|
|
||||||
|
using (new CommandTimeoutCascade(1000))
|
||||||
|
{
|
||||||
|
fsql.Select<Order>().ToList();
|
||||||
|
fsql.Select<Order>().ToList();
|
||||||
|
fsql.Select<Order>().ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fsql.UseJsonMap();
|
fsql.UseJsonMap();
|
||||||
|
|
||||||
//var txt1 = fsql.Ado.Query<(string, string)>("select '꧁꫞꯭丑小鸭꫞꧂', '123123中国人' from dual");
|
//var txt1 = fsql.Ado.Query<(string, string)>("select '꧁꫞꯭丑小鸭꫞꧂', '123123中国人' from dual");
|
||||||
|
@ -80,8 +80,9 @@ namespace FreeSql
|
|||||||
Attach(data);
|
Attach(data);
|
||||||
if (_db.Options.EnableAddOrUpdateNavigateList)
|
if (_db.Options.EnableAddOrUpdateNavigateList)
|
||||||
await AddOrUpdateNavigateListAsync(data, true, null, cancellationToken);
|
await AddOrUpdateNavigateListAsync(data, true, null, cancellationToken);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EnqueueToDbContext(DbContext.EntityChangeType.Insert, CreateEntityState(data));
|
EnqueueToDbContext(DbContext.EntityChangeType.Insert, CreateEntityState(data));
|
||||||
@ -124,21 +125,22 @@ namespace FreeSql
|
|||||||
await AddOrUpdateNavigateListAsync(item, true, null, cancellationToken);
|
await AddOrUpdateNavigateListAsync(item, true, null, cancellationToken);
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
foreach (var s in data)
|
if (_tableIdentitys.Length == 1 && _tableReturnColumns.Length == 1)
|
||||||
await AddPrivAsync(s, false, cancellationToken);
|
{
|
||||||
return;
|
foreach (var s in data)
|
||||||
|
await AddPrivAsync(s, false, cancellationToken);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
//进入队列,等待 SaveChanges 时执行
|
||||||
{
|
foreach (var item in data)
|
||||||
//进入队列,等待 SaveChanges 时执行
|
EnqueueToDbContext(DbContext.EntityChangeType.Insert, CreateEntityState(item));
|
||||||
|
AttachRange(data);
|
||||||
|
if (_db.Options.EnableAddOrUpdateNavigateList)
|
||||||
foreach (var item in data)
|
foreach (var item in data)
|
||||||
EnqueueToDbContext(DbContext.EntityChangeType.Insert, CreateEntityState(item));
|
await AddOrUpdateNavigateListAsync(item, true, null, cancellationToken);
|
||||||
AttachRange(data);
|
|
||||||
if (_db.Options.EnableAddOrUpdateNavigateList)
|
|
||||||
foreach (var item in data)
|
|
||||||
await AddOrUpdateNavigateListAsync(item, true, null, cancellationToken);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async public Task SaveManyAsync(TEntity item, string propertyName, CancellationToken cancellationToken = default)
|
async public Task SaveManyAsync(TEntity item, string propertyName, CancellationToken cancellationToken = default)
|
||||||
|
@ -79,8 +79,9 @@ namespace FreeSql
|
|||||||
Attach(data);
|
Attach(data);
|
||||||
if (_db.Options.EnableAddOrUpdateNavigateList)
|
if (_db.Options.EnableAddOrUpdateNavigateList)
|
||||||
AddOrUpdateNavigateList(data, true, null);
|
AddOrUpdateNavigateList(data, true, null);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EnqueueToDbContext(DbContext.EntityChangeType.Insert, CreateEntityState(data));
|
EnqueueToDbContext(DbContext.EntityChangeType.Insert, CreateEntityState(data));
|
||||||
@ -127,21 +128,22 @@ namespace FreeSql
|
|||||||
AddOrUpdateNavigateList(item, true, null);
|
AddOrUpdateNavigateList(item, true, null);
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
foreach (var s in data)
|
if (_tableIdentitys.Length == 1 && _tableReturnColumns.Length == 1)
|
||||||
AddPriv(s, false);
|
{
|
||||||
return;
|
foreach (var s in data)
|
||||||
|
AddPriv(s, false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
//进入队列,等待 SaveChanges 时执行
|
||||||
{
|
foreach (var item in data)
|
||||||
//进入队列,等待 SaveChanges 时执行
|
EnqueueToDbContext(DbContext.EntityChangeType.Insert, CreateEntityState(item));
|
||||||
|
AttachRange(data);
|
||||||
|
if (_db.Options.EnableAddOrUpdateNavigateList)
|
||||||
foreach (var item in data)
|
foreach (var item in data)
|
||||||
EnqueueToDbContext(DbContext.EntityChangeType.Insert, CreateEntityState(item));
|
AddOrUpdateNavigateList(item, true, null);
|
||||||
AttachRange(data);
|
|
||||||
if (_db.Options.EnableAddOrUpdateNavigateList)
|
|
||||||
foreach (var item in data)
|
|
||||||
AddOrUpdateNavigateList(item, true, null);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1718,6 +1718,10 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
|
|||||||
Assert.Equal(2, g.oracle.Select<ToDel1Pk>().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
|
Assert.Equal(2, g.oracle.Select<ToDel1Pk>().Where(a => a.name.StartsWith("name")).ToDelete().ExecuteAffrows());
|
||||||
Assert.Equal(3, g.oracle.Select<ToDel1Pk>().Count());
|
Assert.Equal(3, g.oracle.Select<ToDel1Pk>().Count());
|
||||||
Assert.Equal(3, g.oracle.Select<ToDel1Pk>().Where(a => a.name.StartsWith("nick")).Count());
|
Assert.Equal(3, g.oracle.Select<ToDel1Pk>().Where(a => a.name.StartsWith("nick")).Count());
|
||||||
|
Assert.Equal(2, g.oracle.Select<ToDel1Pk>().OrderBy(a => a.name).Limit(2).ToDelete().ExecuteAffrows());
|
||||||
|
Assert.Equal(1, g.oracle.Select<ToDel1Pk>().Count());
|
||||||
|
Assert.Equal(1, g.oracle.Select<ToDel1Pk>().Where(a => a.name.StartsWith("nick")).Count());
|
||||||
|
Assert.Equal("nick3", g.oracle.Select<ToDel1Pk>().ToList()[0].name);
|
||||||
|
|
||||||
g.oracle.Select<ToDel2Pk>().ToDelete().ExecuteAffrows();
|
g.oracle.Select<ToDel2Pk>().ToDelete().ExecuteAffrows();
|
||||||
Assert.Equal(0, g.oracle.Select<ToDel2Pk>().Count());
|
Assert.Equal(0, g.oracle.Select<ToDel2Pk>().Count());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user