mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 增加 FreeSql.DbContext 实体对象的变化事件;
> 文档:https://github.com/2881099/FreeSql/wiki/DbContext#%E5%AE%9E%E4%BD%93%E5%8F%98%E5%8C%96%E4%BA%8B%E4%BB%B6 - 补充 Aop.CurdBefore 事件参数 Table 实体类型的元数据;
This commit is contained in:
		@@ -13,10 +13,7 @@ namespace FreeSql
 | 
			
		||||
        async public virtual Task<int> SaveChangesAsync()
 | 
			
		||||
        {
 | 
			
		||||
            await ExecCommandAsync();
 | 
			
		||||
            UnitOfWork?.Commit();
 | 
			
		||||
            var ret = _affrows;
 | 
			
		||||
            _affrows = 0;
 | 
			
		||||
            return ret;
 | 
			
		||||
            return SaveChangesSuccess();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        static Dictionary<Type, Dictionary<string, Func<object, object[], Task<int>>>> _dicExecCommandDbContextBetchAsync = new Dictionary<Type, Dictionary<string, Func<object, object[], Task<int>>>>();
 | 
			
		||||
@@ -96,31 +93,31 @@ namespace FreeSql
 | 
			
		||||
                var isLiveUpdate = false;
 | 
			
		||||
 | 
			
		||||
                if (_actions.Any() == false && states.Any() ||
 | 
			
		||||
                    info != null && oldinfo.actionType != info.actionType ||
 | 
			
		||||
                    info != null && oldinfo.changeType != info.changeType ||
 | 
			
		||||
                    info != null && oldinfo.stateType != info.stateType ||
 | 
			
		||||
                    info != null && oldinfo.entityType != info.entityType)
 | 
			
		||||
                {
 | 
			
		||||
 | 
			
		||||
                    if (info != null && oldinfo.actionType == info.actionType && oldinfo.stateType == info.stateType && oldinfo.entityType == info.entityType)
 | 
			
		||||
                    if (info != null && oldinfo.changeType == info.changeType && oldinfo.stateType == info.stateType && oldinfo.entityType == info.entityType)
 | 
			
		||||
                    {
 | 
			
		||||
                        //最后一个,合起来发送
 | 
			
		||||
                        states.Add(info.state);
 | 
			
		||||
                        info = null;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    switch (oldinfo.actionType)
 | 
			
		||||
                    switch (oldinfo.changeType)
 | 
			
		||||
                    {
 | 
			
		||||
                        case ExecCommandInfoType.Insert:
 | 
			
		||||
                        case EntityChangeType.Insert:
 | 
			
		||||
                            await funcInsert();
 | 
			
		||||
                            break;
 | 
			
		||||
                        case ExecCommandInfoType.Delete:
 | 
			
		||||
                        case EntityChangeType.Delete:
 | 
			
		||||
                            await funcDelete();
 | 
			
		||||
                            break;
 | 
			
		||||
                    }
 | 
			
		||||
                    isLiveUpdate = true;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (isLiveUpdate || oldinfo.actionType == ExecCommandInfoType.Update)
 | 
			
		||||
                if (isLiveUpdate || oldinfo.changeType == EntityChangeType.Update)
 | 
			
		||||
                {
 | 
			
		||||
                    if (states.Any())
 | 
			
		||||
                        await funcUpdate(isLiveUpdate);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user