EFCore 重写DbContext.SaveChanges方法,避免多个实例跟踪发生错误|C/S开发框架
作者:csframework|C/S框架网  发布日期:2024/10/20 11:47:29

EFCore 重写DbContext.SaveChanges方法,避免多个实例跟踪发生错误|C/S开发框架

重写DbContext的保存方法,避免多个DbContext实例跟踪相同的实体发生错误

重写DbContext.SaveChanges方法

C#全选
        /// <summary>
        /// 重写DbContext的保存方法,避免多个DbContext实例跟踪相同的实体发生错误
        /// </summary>
        /// <returns></returns>
        public override int SaveChanges()
        {
            try
            {
                return base.SaveChanges();
            }
            finally
            {
                this.Detach();
            }
        }

C#全选
        /// <summary>
        /// 取消跟踪
        /// </summary>
        public void Detach()
        {
            this.ChangeTracker.Entries().ToList().ForEach(aEntry =>
            {
                if (aEntry.State != EntityState.Detached)
                    aEntry.State = EntityState.Detached;
            });
        }

使用方法

C#全选
        internal int DeleteLog(List<string> isids)
        {
            var list = _Database.sys_UpgraderLog
                .Where(w => isids.Contains(w.isid)).ToList();
            _Database.RemoveRange(list);
            return _Database.SaveChanges();
        }

C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务
上一篇 下一篇