Example #1
0
        public async Task test()
        {
            MysqlDbContent mysqlDbContent = services.BuildServiceProvider().GetRequiredService <MysqlDbContent>();
            var            info           = mysqlDbContent.setting.FirstOrDefault(a => a.Id == 18);

            info.Contact = "142";
            //伪造并发
            mysqlDbContent.Database.ExecuteSqlCommand("update setting set Contact='37a1222111' where Id=" + info.Id);
            try
            {
                var s = mysqlDbContent.SaveChanges();
            }
            catch (DbUpdateConcurrencyException ex) //配置并发令牌之后 触发的事件
            {
                foreach (var entry in ex.Entries)
                {
                    //第一种
                    //foreach (var property in entry.Metadata.GetProperties())
                    //{
                    //    ////当前值
                    //    //var proposedValue = entry.Property(property.Name).CurrentValue;

                    //    ////原始值
                    //    //var originalValue = entry.Property(property.Name).OriginalValue;

                    //    //数据库值
                    //    var databaseValue = entry.GetDatabaseValues().GetValue<object>(property.Name);
                    //    //原始值等于数据库 保存数据库的值和原始值一直 防止提交的时候再次报错
                    //    entry.Property(property.Name).OriginalValue = databaseValue;
                    //}
                    ////重新提交
                    //entry.Context.SaveChanges();



                    //第二种

                    // 保存数据库的值和原始值一直 防止提交的时候再次报错
                    entry.OriginalValues.SetValues(entry.GetDatabaseValues());
                    entry.Context.SaveChanges();
                }
            }
            catch (Exception ex)
            {
            }
        }
Example #2
0
 public ValuesController(MysqlDbContent _mysqlDbContent, IUnitOfWork <MysqlDbContent> _unitOfWork, IUnitOfWork <ConfigurationDbContent> unitOf)
 {
     mysqlDbContent = _mysqlDbContent;
     unitOfWork     = _unitOfWork;
 }