mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-18 20:08:15 +08:00
rename DbContext Internal Method
This commit is contained in:
@ -32,7 +32,7 @@ namespace FreeSql
|
||||
|
||||
protected virtual ISelect<TEntity> OrmSelect(object dywhere)
|
||||
{
|
||||
DbContextExecCommand(); //查询前先提交,否则会出脏读
|
||||
DbContextFlushCommand(); //查询前先提交,否则会出脏读
|
||||
return _db.OrmOriginal.Select<TEntity>().AsType(_entityType).WithTransaction(_uow?.GetOrBeginTransaction(false)).TrackToList(TrackToList).WhereDynamic(dywhere);
|
||||
}
|
||||
|
||||
@ -70,7 +70,7 @@ namespace FreeSql
|
||||
protected virtual IDelete<TEntity> OrmDelete(object dywhere) => _db.OrmOriginal.Delete<TEntity>().AsType(_entityType).WithTransaction(_uow?.GetOrBeginTransaction()).WhereDynamic(dywhere);
|
||||
|
||||
internal void EnqueueToDbContext(DbContext.EntityChangeType changeType, EntityState state) =>
|
||||
_db.EnqueueAction(changeType, this, typeof(EntityState), _entityType, state);
|
||||
_db.EnqueuePreCommand(changeType, this, typeof(EntityState), _entityType, state);
|
||||
|
||||
internal void IncrAffrows(int affrows) =>
|
||||
_db._affrows += affrows;
|
||||
|
@ -14,10 +14,10 @@ namespace FreeSql
|
||||
{
|
||||
partial class DbSet<TEntity>
|
||||
{
|
||||
Task DbContextExecCommandAsync()
|
||||
Task DbContextFlushCommandAsync()
|
||||
{
|
||||
_dicUpdateTimes.Clear();
|
||||
return _db.ExecCommandAsync();
|
||||
return _db.FlushCommandAsync();
|
||||
}
|
||||
|
||||
async Task<int> DbContextBatchAddAsync(EntityState[] adds)
|
||||
@ -43,7 +43,7 @@ namespace FreeSql
|
||||
case DataType.OdbcPostgreSQL:
|
||||
if (_tableIdentitys.Length == 1 && _table.Primarys.Length == 1)
|
||||
{
|
||||
await DbContextExecCommandAsync();
|
||||
await DbContextFlushCommandAsync();
|
||||
var idtval = await this.OrmInsert(data).ExecuteIdentityAsync();
|
||||
IncrAffrows(1);
|
||||
_db.OrmOriginal.SetEntityIdentityValueWithPrimary(_entityType, data, idtval);
|
||||
@ -54,7 +54,7 @@ namespace FreeSql
|
||||
}
|
||||
else
|
||||
{
|
||||
await DbContextExecCommandAsync();
|
||||
await DbContextFlushCommandAsync();
|
||||
var newval = (await this.OrmInsert(data).ExecuteInsertedAsync()).First();
|
||||
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = newval, Type = DbContext.EntityChangeType.Insert });
|
||||
IncrAffrows(1);
|
||||
@ -67,7 +67,7 @@ namespace FreeSql
|
||||
default:
|
||||
if (_tableIdentitys.Length == 1 && _table.Primarys.Length == 1)
|
||||
{
|
||||
await DbContextExecCommandAsync();
|
||||
await DbContextFlushCommandAsync();
|
||||
var idtval = await this.OrmInsert(data).ExecuteIdentityAsync();
|
||||
IncrAffrows(1);
|
||||
_db.OrmOriginal.SetEntityIdentityValueWithPrimary(_entityType, data, idtval);
|
||||
@ -102,7 +102,7 @@ namespace FreeSql
|
||||
case DataType.OdbcSqlServer:
|
||||
case DataType.PostgreSQL:
|
||||
case DataType.OdbcPostgreSQL:
|
||||
await DbContextExecCommandAsync();
|
||||
await DbContextFlushCommandAsync();
|
||||
var rets = await this.OrmInsert(data).ExecuteInsertedAsync();
|
||||
if (rets.Count != data.Count()) throw new Exception($"特别错误:批量添加失败,{_db.OrmOriginal.Ado.DataType} 的返回数据,与添加的数目不匹配");
|
||||
_db._entityChangeReport.AddRange(rets.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a, Type = DbContext.EntityChangeType.Insert }));
|
||||
@ -149,7 +149,7 @@ namespace FreeSql
|
||||
throw new ArgumentException($"{_table.Type.FullName} 类型的属性 {propertyName} 不是 OneToMany 或 ManyToMany 特性");
|
||||
}
|
||||
|
||||
await DbContextExecCommandAsync();
|
||||
await DbContextFlushCommandAsync();
|
||||
var oldEnable = _db.Options.EnableAddOrUpdateNavigateList;
|
||||
_db.Options.EnableAddOrUpdateNavigateList = false;
|
||||
try
|
||||
@ -157,7 +157,7 @@ namespace FreeSql
|
||||
await AddOrUpdateNavigateListAsync(item, false, propertyName);
|
||||
if (tref.RefType == Internal.Model.TableRefType.OneToMany)
|
||||
{
|
||||
await DbContextExecCommandAsync();
|
||||
await DbContextFlushCommandAsync();
|
||||
//删除没有保存的数据,求出主体的条件
|
||||
var deleteWhereParentParam = Expression.Parameter(typeof(object), "a");
|
||||
Expression whereParentExp = null;
|
||||
@ -401,7 +401,7 @@ namespace FreeSql
|
||||
foreach (var item in data)
|
||||
{
|
||||
if (_dicUpdateTimes.ContainsKey(item))
|
||||
await DbContextExecCommandAsync();
|
||||
await DbContextFlushCommandAsync();
|
||||
_dicUpdateTimes.Add(item, 1);
|
||||
|
||||
var state = CreateEntityState(item);
|
||||
@ -429,7 +429,7 @@ namespace FreeSql
|
||||
/// <returns></returns>
|
||||
async public Task<int> RemoveAsync(Expression<Func<TEntity, bool>> predicate)
|
||||
{
|
||||
await DbContextExecCommandAsync();
|
||||
await DbContextFlushCommandAsync();
|
||||
return await this.OrmDelete(null).Where(predicate).ExecuteAffrowsAsync();
|
||||
}
|
||||
#endregion
|
||||
@ -449,10 +449,10 @@ namespace FreeSql
|
||||
|
||||
if (flagExists == true && CanUpdate(data, false))
|
||||
{
|
||||
await DbContextExecCommandAsync();
|
||||
await DbContextFlushCommandAsync();
|
||||
var affrows = _db._affrows;
|
||||
await UpdateRangePrivAsync(new[] { data }, false);
|
||||
await DbContextExecCommandAsync();
|
||||
await DbContextFlushCommandAsync();
|
||||
affrows = _db._affrows - affrows;
|
||||
if (affrows > 0) return;
|
||||
}
|
||||
|
@ -13,10 +13,10 @@ namespace FreeSql
|
||||
partial class DbSet<TEntity>
|
||||
{
|
||||
|
||||
void DbContextExecCommand()
|
||||
void DbContextFlushCommand()
|
||||
{
|
||||
_dicUpdateTimes.Clear();
|
||||
_db.ExecCommand();
|
||||
_db.FlushCommand();
|
||||
}
|
||||
|
||||
int DbContextBatchAdd(EntityState[] adds)
|
||||
@ -42,7 +42,7 @@ namespace FreeSql
|
||||
case DataType.OdbcPostgreSQL:
|
||||
if (_tableIdentitys.Length == 1)
|
||||
{
|
||||
DbContextExecCommand();
|
||||
DbContextFlushCommand();
|
||||
var idtval = this.OrmInsert(data).ExecuteIdentity();
|
||||
IncrAffrows(1);
|
||||
_db.OrmOriginal.SetEntityIdentityValueWithPrimary(_entityType, data, idtval);
|
||||
@ -53,7 +53,7 @@ namespace FreeSql
|
||||
}
|
||||
else
|
||||
{
|
||||
DbContextExecCommand();
|
||||
DbContextFlushCommand();
|
||||
var newval = this.OrmInsert(data).ExecuteInserted().First();
|
||||
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = newval, Type = DbContext.EntityChangeType.Insert });
|
||||
IncrAffrows(1);
|
||||
@ -66,7 +66,7 @@ namespace FreeSql
|
||||
default:
|
||||
if (_tableIdentitys.Length == 1)
|
||||
{
|
||||
DbContextExecCommand();
|
||||
DbContextFlushCommand();
|
||||
var idtval = this.OrmInsert(data).ExecuteIdentity();
|
||||
IncrAffrows(1);
|
||||
_db.OrmOriginal.SetEntityIdentityValueWithPrimary(_entityType, data, idtval);
|
||||
@ -105,7 +105,7 @@ namespace FreeSql
|
||||
case DataType.OdbcSqlServer:
|
||||
case DataType.PostgreSQL:
|
||||
case DataType.OdbcPostgreSQL:
|
||||
DbContextExecCommand();
|
||||
DbContextFlushCommand();
|
||||
var rets = this.OrmInsert(data).ExecuteInserted();
|
||||
if (rets.Count != data.Count()) throw new Exception($"特别错误:批量添加失败,{_db.OrmOriginal.Ado.DataType} 的返回数据,与添加的数目不匹配");
|
||||
_db._entityChangeReport.AddRange(rets.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a, Type = DbContext.EntityChangeType.Insert }));
|
||||
@ -161,7 +161,7 @@ namespace FreeSql
|
||||
throw new ArgumentException($"{_table.Type.FullName} 类型的属性 {propertyName} 不是 OneToMany 或 ManyToMany 特性");
|
||||
}
|
||||
|
||||
DbContextExecCommand();
|
||||
DbContextFlushCommand();
|
||||
var oldEnable = _db.Options.EnableAddOrUpdateNavigateList;
|
||||
_db.Options.EnableAddOrUpdateNavigateList = false;
|
||||
try
|
||||
@ -169,7 +169,7 @@ namespace FreeSql
|
||||
AddOrUpdateNavigateList(item, false, propertyName);
|
||||
if (tref.RefType == Internal.Model.TableRefType.OneToMany)
|
||||
{
|
||||
DbContextExecCommand();
|
||||
DbContextFlushCommand();
|
||||
//删除没有保存的数据,求出主体的条件
|
||||
var deleteWhereParentParam = Expression.Parameter(typeof(object), "a");
|
||||
Expression whereParentExp = null;
|
||||
@ -442,7 +442,7 @@ namespace FreeSql
|
||||
foreach (var item in data)
|
||||
{
|
||||
if (_dicUpdateTimes.ContainsKey(item))
|
||||
DbContextExecCommand();
|
||||
DbContextFlushCommand();
|
||||
_dicUpdateTimes.Add(item, 1);
|
||||
|
||||
var state = CreateEntityState(item);
|
||||
@ -488,7 +488,7 @@ namespace FreeSql
|
||||
/// <returns></returns>
|
||||
public int Remove(Expression<Func<TEntity, bool>> predicate)
|
||||
{
|
||||
DbContextExecCommand();
|
||||
DbContextFlushCommand();
|
||||
return this.OrmDelete(null).Where(predicate).ExecuteAffrows();
|
||||
}
|
||||
#endregion
|
||||
@ -512,10 +512,10 @@ namespace FreeSql
|
||||
|
||||
if (flagExists == true && CanUpdate(data, false))
|
||||
{
|
||||
DbContextExecCommand();
|
||||
DbContextFlushCommand();
|
||||
var affrows = _db._affrows;
|
||||
UpdateRangePriv(new[] { data }, false);
|
||||
DbContextExecCommand();
|
||||
DbContextFlushCommand();
|
||||
affrows = _db._affrows - affrows;
|
||||
if (affrows > 0) return;
|
||||
}
|
||||
|
Reference in New Issue
Block a user