mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32:50 +08:00
Merge branch 'master' of https://github.com/dotnetcore/FreeSql
This commit is contained in:
commit
9ba6148329
@ -263,6 +263,10 @@ namespace FreeSql
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public object BeforeObject { get; set; }
|
public object BeforeObject { get; set; }
|
||||||
public EntityChangeType Type { get; set; }
|
public EntityChangeType Type { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 实体类型
|
||||||
|
/// </summary>
|
||||||
|
public Type EntityType { get; set; }
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 实体变化记录
|
/// 实体变化记录
|
||||||
|
@ -26,7 +26,7 @@ namespace FreeSql
|
|||||||
{
|
{
|
||||||
if (adds.Any() == false) return 0;
|
if (adds.Any() == false) return 0;
|
||||||
var affrows = await this.OrmInsert(adds.Select(a => a.Value)).ExecuteAffrowsAsync(cancellationToken);
|
var affrows = await this.OrmInsert(adds.Select(a => a.Value)).ExecuteAffrowsAsync(cancellationToken);
|
||||||
_db._entityChangeReport.AddRange(adds.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a.Value, Type = DbContext.EntityChangeType.Insert }));
|
_db._entityChangeReport.AddRange(adds.Select(a => new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = a.Value, Type = DbContext.EntityChangeType.Insert }));
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ namespace FreeSql
|
|||||||
var idtval = await this.OrmInsert(data).ExecuteIdentityAsync(cancellationToken);
|
var idtval = await this.OrmInsert(data).ExecuteIdentityAsync(cancellationToken);
|
||||||
IncrAffrows(1);
|
IncrAffrows(1);
|
||||||
_db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, data, _tableIdentitys[0].CsName, idtval);
|
_db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, data, _tableIdentitys[0].CsName, idtval);
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = data, Type = DbContext.EntityChangeType.Insert });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = data, Type = DbContext.EntityChangeType.Insert });
|
||||||
Attach(data);
|
Attach(data);
|
||||||
if (_db.Options.EnableCascadeSave)
|
if (_db.Options.EnableCascadeSave)
|
||||||
await AddOrUpdateNavigateAsync(data, true, null, cancellationToken);
|
await AddOrUpdateNavigateAsync(data, true, null, cancellationToken);
|
||||||
@ -62,7 +62,7 @@ namespace FreeSql
|
|||||||
{
|
{
|
||||||
await DbContextFlushCommandAsync(cancellationToken);
|
await DbContextFlushCommandAsync(cancellationToken);
|
||||||
var newval = (await this.OrmInsert(data).ExecuteInsertedAsync(cancellationToken)).First();
|
var newval = (await this.OrmInsert(data).ExecuteInsertedAsync(cancellationToken)).First();
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = newval, Type = DbContext.EntityChangeType.Insert });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = newval, Type = DbContext.EntityChangeType.Insert });
|
||||||
IncrAffrows(1);
|
IncrAffrows(1);
|
||||||
_db.OrmOriginal.MapEntityValue(_entityType, newval, data);
|
_db.OrmOriginal.MapEntityValue(_entityType, newval, data);
|
||||||
Attach(newval);
|
Attach(newval);
|
||||||
@ -77,7 +77,7 @@ namespace FreeSql
|
|||||||
var idtval = await this.OrmInsert(data).ExecuteIdentityAsync(cancellationToken);
|
var idtval = await this.OrmInsert(data).ExecuteIdentityAsync(cancellationToken);
|
||||||
IncrAffrows(1);
|
IncrAffrows(1);
|
||||||
_db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, data, _tableIdentitys[0].CsName, idtval);
|
_db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, data, _tableIdentitys[0].CsName, idtval);
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = data, Type = DbContext.EntityChangeType.Insert });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = data, Type = DbContext.EntityChangeType.Insert });
|
||||||
Attach(data);
|
Attach(data);
|
||||||
if (_db.Options.EnableCascadeSave)
|
if (_db.Options.EnableCascadeSave)
|
||||||
await AddOrUpdateNavigateAsync(data, true, null, cancellationToken);
|
await AddOrUpdateNavigateAsync(data, true, null, cancellationToken);
|
||||||
@ -115,7 +115,7 @@ namespace FreeSql
|
|||||||
await DbContextFlushCommandAsync(cancellationToken);
|
await DbContextFlushCommandAsync(cancellationToken);
|
||||||
var rets = await this.OrmInsert(data).ExecuteInsertedAsync(cancellationToken);
|
var rets = await this.OrmInsert(data).ExecuteInsertedAsync(cancellationToken);
|
||||||
if (rets.Count != data.Count()) throw new Exception(DbContextStrings.SpecialError_BatchAdditionFailed(_db.OrmOriginal.Ado.DataType));
|
if (rets.Count != data.Count()) throw new Exception(DbContextStrings.SpecialError_BatchAdditionFailed(_db.OrmOriginal.Ado.DataType));
|
||||||
_db._entityChangeReport.AddRange(rets.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a, Type = DbContext.EntityChangeType.Insert }));
|
_db._entityChangeReport.AddRange(rets.Select(a => new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = a, Type = DbContext.EntityChangeType.Insert }));
|
||||||
var idx = 0;
|
var idx = 0;
|
||||||
foreach (var s in data)
|
foreach (var s in data)
|
||||||
_db.OrmOriginal.MapEntityValue(_entityType, rets[idx++], s);
|
_db.OrmOriginal.MapEntityValue(_entityType, rets[idx++], s);
|
||||||
@ -266,7 +266,7 @@ namespace FreeSql
|
|||||||
foreach (var midWhere in midWheres) delall.Where(midWhere);
|
foreach (var midWhere in midWheres) delall.Where(midWhere);
|
||||||
var sql = delall.ToSql();
|
var sql = delall.ToSql();
|
||||||
await delall.ExecuteAffrowsAsync(cancellationToken);
|
await delall.ExecuteAffrowsAsync(cancellationToken);
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
|
||||||
}
|
}
|
||||||
else //保存
|
else //保存
|
||||||
{
|
{
|
||||||
@ -404,7 +404,9 @@ namespace FreeSql
|
|||||||
|
|
||||||
var update = this.OrmUpdate(null).SetSource(data.Select(a => a.Value)).IgnoreColumns(cuig);
|
var update = this.OrmUpdate(null).SetSource(data.Select(a => a.Value)).IgnoreColumns(cuig);
|
||||||
var affrows = await update.ExecuteAffrowsAsync(cancellationToken);
|
var affrows = await update.ExecuteAffrowsAsync(cancellationToken);
|
||||||
_db._entityChangeReport.AddRange(data.Select(a => new DbContext.EntityChangeReport.ChangeInfo {
|
_db._entityChangeReport.AddRange(data.Select(a => new DbContext.EntityChangeReport.ChangeInfo
|
||||||
|
{
|
||||||
|
EntityType = _entityType,
|
||||||
Object = a.Value,
|
Object = a.Value,
|
||||||
BeforeObject = _states.TryGetValue(a.Key, out var beforeVal) ? CreateEntityState(beforeVal.Value).Value : null,
|
BeforeObject = _states.TryGetValue(a.Key, out var beforeVal) ? CreateEntityState(beforeVal.Value).Value : null,
|
||||||
Type = DbContext.EntityChangeType.Update
|
Type = DbContext.EntityChangeType.Update
|
||||||
@ -471,7 +473,7 @@ namespace FreeSql
|
|||||||
{
|
{
|
||||||
if (dels.Any() == false) return 0;
|
if (dels.Any() == false) return 0;
|
||||||
var affrows = await this.OrmDelete(dels.Select(a => a.Value)).ExecuteAffrowsAsync(cancellationToken);
|
var affrows = await this.OrmDelete(dels.Select(a => a.Value)).ExecuteAffrowsAsync(cancellationToken);
|
||||||
_db._entityChangeReport.AddRange(dels.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a.Value, Type = DbContext.EntityChangeType.Delete }));
|
_db._entityChangeReport.AddRange(dels.Select(a => new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = a.Value, Type = DbContext.EntityChangeType.Delete }));
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
async public Task<int> RemoveAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default)
|
async public Task<int> RemoveAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default)
|
||||||
|
@ -24,7 +24,7 @@ namespace FreeSql
|
|||||||
{
|
{
|
||||||
if (adds.Any() == false) return 0;
|
if (adds.Any() == false) return 0;
|
||||||
var affrows = this.OrmInsert(adds.Select(a => a.Value)).ExecuteAffrows();
|
var affrows = this.OrmInsert(adds.Select(a => a.Value)).ExecuteAffrows();
|
||||||
_db._entityChangeReport.AddRange(adds.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a.Value, Type = DbContext.EntityChangeType.Insert }));
|
_db._entityChangeReport.AddRange(adds.Select(a => new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = a.Value, Type = DbContext.EntityChangeType.Insert }));
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ namespace FreeSql
|
|||||||
var idtval = this.OrmInsert(data).ExecuteIdentity();
|
var idtval = this.OrmInsert(data).ExecuteIdentity();
|
||||||
IncrAffrows(1);
|
IncrAffrows(1);
|
||||||
_db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, data, _tableIdentitys[0].CsName, idtval);
|
_db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, data, _tableIdentitys[0].CsName, idtval);
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = data, Type = DbContext.EntityChangeType.Insert });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = data, Type = DbContext.EntityChangeType.Insert });
|
||||||
Attach(data);
|
Attach(data);
|
||||||
if (_db.Options.EnableCascadeSave)
|
if (_db.Options.EnableCascadeSave)
|
||||||
AddOrUpdateNavigate(data, true, null);
|
AddOrUpdateNavigate(data, true, null);
|
||||||
@ -60,7 +60,7 @@ namespace FreeSql
|
|||||||
{
|
{
|
||||||
DbContextFlushCommand();
|
DbContextFlushCommand();
|
||||||
var newval = this.OrmInsert(data).ExecuteInserted().First();
|
var newval = this.OrmInsert(data).ExecuteInserted().First();
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = newval, Type = DbContext.EntityChangeType.Insert });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = newval, Type = DbContext.EntityChangeType.Insert });
|
||||||
IncrAffrows(1);
|
IncrAffrows(1);
|
||||||
_db.OrmOriginal.MapEntityValue(_entityType, newval, data);
|
_db.OrmOriginal.MapEntityValue(_entityType, newval, data);
|
||||||
Attach(newval);
|
Attach(newval);
|
||||||
@ -75,7 +75,7 @@ namespace FreeSql
|
|||||||
var idtval = this.OrmInsert(data).ExecuteIdentity();
|
var idtval = this.OrmInsert(data).ExecuteIdentity();
|
||||||
IncrAffrows(1);
|
IncrAffrows(1);
|
||||||
_db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, data, _tableIdentitys[0].CsName, idtval);
|
_db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, data, _tableIdentitys[0].CsName, idtval);
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = data, Type = DbContext.EntityChangeType.Insert });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = data, Type = DbContext.EntityChangeType.Insert });
|
||||||
Attach(data);
|
Attach(data);
|
||||||
if (_db.Options.EnableCascadeSave)
|
if (_db.Options.EnableCascadeSave)
|
||||||
AddOrUpdateNavigate(data, true, null);
|
AddOrUpdateNavigate(data, true, null);
|
||||||
@ -117,7 +117,7 @@ namespace FreeSql
|
|||||||
DbContextFlushCommand();
|
DbContextFlushCommand();
|
||||||
var rets = this.OrmInsert(data).ExecuteInserted();
|
var rets = this.OrmInsert(data).ExecuteInserted();
|
||||||
if (rets.Count != data.Count()) throw new Exception(DbContextStrings.SpecialError_BatchAdditionFailed(_db.OrmOriginal.Ado.DataType));
|
if (rets.Count != data.Count()) throw new Exception(DbContextStrings.SpecialError_BatchAdditionFailed(_db.OrmOriginal.Ado.DataType));
|
||||||
_db._entityChangeReport.AddRange(rets.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a, Type = DbContext.EntityChangeType.Insert }));
|
_db._entityChangeReport.AddRange(rets.Select(a => new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = a, Type = DbContext.EntityChangeType.Insert }));
|
||||||
var idx = 0;
|
var idx = 0;
|
||||||
foreach (var s in data)
|
foreach (var s in data)
|
||||||
_db.OrmOriginal.MapEntityValue(_entityType, rets[idx++], s);
|
_db.OrmOriginal.MapEntityValue(_entityType, rets[idx++], s);
|
||||||
@ -277,7 +277,7 @@ namespace FreeSql
|
|||||||
foreach (var midWhere in midWheres) delall.Where(midWhere);
|
foreach (var midWhere in midWheres) delall.Where(midWhere);
|
||||||
var sql = delall.ToSql();
|
var sql = delall.ToSql();
|
||||||
delall.ExecuteAffrows();
|
delall.ExecuteAffrows();
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
|
||||||
}
|
}
|
||||||
else //保存
|
else //保存
|
||||||
{
|
{
|
||||||
@ -440,6 +440,7 @@ namespace FreeSql
|
|||||||
var affrows = update.ExecuteAffrows();
|
var affrows = update.ExecuteAffrows();
|
||||||
_db._entityChangeReport.AddRange(data.Select(a => new DbContext.EntityChangeReport.ChangeInfo
|
_db._entityChangeReport.AddRange(data.Select(a => new DbContext.EntityChangeReport.ChangeInfo
|
||||||
{
|
{
|
||||||
|
EntityType = _entityType,
|
||||||
Object = a.Value,
|
Object = a.Value,
|
||||||
BeforeObject = _states.TryGetValue(a.Key, out var beforeVal) ? CreateEntityState(beforeVal.Value).Value : null,
|
BeforeObject = _states.TryGetValue(a.Key, out var beforeVal) ? CreateEntityState(beforeVal.Value).Value : null,
|
||||||
Type = DbContext.EntityChangeType.Update
|
Type = DbContext.EntityChangeType.Update
|
||||||
@ -512,7 +513,7 @@ namespace FreeSql
|
|||||||
{
|
{
|
||||||
if (dels.Any() == false) return 0;
|
if (dels.Any() == false) return 0;
|
||||||
var affrows = this.OrmDelete(dels.Select(a => a.Value)).ExecuteAffrows();
|
var affrows = this.OrmDelete(dels.Select(a => a.Value)).ExecuteAffrows();
|
||||||
_db._entityChangeReport.AddRange(dels.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a.Value, Type = DbContext.EntityChangeType.Delete }));
|
_db._entityChangeReport.AddRange(dels.Select(a => new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = a.Value, Type = DbContext.EntityChangeType.Delete }));
|
||||||
return affrows; //https://github.com/dotnetcore/FreeSql/issues/373
|
return affrows; //https://github.com/dotnetcore/FreeSql/issues/373
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ namespace FreeSql
|
|||||||
var delete = _dbset.OrmDeleteInternal(null).Where(predicate);
|
var delete = _dbset.OrmDeleteInternal(null).Where(predicate);
|
||||||
var sql = delete.ToSql();
|
var sql = delete.ToSql();
|
||||||
var affrows = delete.ExecuteAffrows();
|
var affrows = delete.ExecuteAffrows();
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = EntityType, Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
public virtual int Delete(TEntity entity)
|
public virtual int Delete(TEntity entity)
|
||||||
|
@ -19,7 +19,7 @@ namespace FreeSql
|
|||||||
var delete = _dbset.OrmDeleteInternal(null).Where(predicate);
|
var delete = _dbset.OrmDeleteInternal(null).Where(predicate);
|
||||||
var sql = delete.ToSql();
|
var sql = delete.ToSql();
|
||||||
var affrows = await delete.ExecuteAffrowsAsync(cancellationToken);
|
var affrows = await delete.ExecuteAffrowsAsync(cancellationToken);
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = EntityType, Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
public virtual Task<int> DeleteAsync(TEntity entity, CancellationToken cancellationToken = default)
|
public virtual Task<int> DeleteAsync(TEntity entity, CancellationToken cancellationToken = default)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user