avatar
nazgol mmm

کاربر

  • 1400/02/12
  • 0
  • 319
1400/02/12 |
backend

به ستون های جدول اضافه نمیشود shadow porperty

به ستون های جدول اضافه نمیشود shadow porperty

 

protected override void OnModelCreating(ModelBuilder builder)
        {

            foreach (var entityType in builder.Model.GetEntityTypes())
            {
                if (entityType.ClrType.GetCustomAttributes(typeof(AuditableAttribute), true).Length > 0)
                {
                    builder.Entity(entityType.Name).Property<DateTime?>("InsertTime");
                    builder.Entity(entityType.Name).Property<DateTime?>("UpdateTime");
                    builder.Entity(entityType.Name).Property<DateTime?>("DeleteTime");
                    builder.Entity(entityType.Name).Property<bool>("IsDeleted");

                }
            }

            base.OnModelCreating(builder);
        }

        public override int SaveChanges()
        {
            var modifiedEntries = ChangeTracker.Entries().Where(a => a.State == EntityState.Modified ||
              a.State == EntityState.Deleted ||
              a.State == EntityState.Added);
            foreach(var item in modifiedEntries)
            {
                var entityType = item.Context.Model.FindEntityType(item.Entity.GetType());
                var inserted = entityType.FindProperty("InsertTime");
                var updated = entityType.FindProperty("UpdateTime");
                var removed = entityType.FindProperty("DeleteTime");
                var IsRemoved = entityType.FindProperty("IsDeleted");

                if(item.State==EntityState.Added && inserted!=null)
                {
                    item.Property("InsertTime").CurrentValue = DateTime.Now;
                }
                if (item.State == EntityState.Modified && updated != null)
                {
                    item.Property("UpdateTime").CurrentValue = DateTime.Now;
                }
                if (item.State==EntityState.Deleted && IsRemoved!=null && removed!=null)
                {
                    item.Property("DeleteTime").CurrentValue = DateTime.Now;
                    item.Property("IsDeleted").CurrentValue = true;
                }               
            }
            return base.SaveChanges();
        }


بعد از اضافه کردن این دستورات باید Add-Migrations را هم اجرا کنید و این تغییرات را بر روی دیتابیس اعمال کنید

 
 

 

 



پاسخی برای این باگ ارسال کنید

لطفا کدها را درون قطعه کد ارسال نمایید

برای ارسال پاسخ باید وارد حساب کاربری خود شوید
ورود به حساب کاربری