public string GetWellId(string tableName) { WellTable = new WellTableModel() { TableName = tableName }; return(GetWellId()); }
public int SaveChanges(string userId) { //Update Modified and ModifiedById For BaseModel classes IEnumerable <DbEntityEntry> entries = ChangeTracker.Entries().Where(x => x.Entity is BaseModel && (x.State == EntityState.Added || x.State == EntityState.Modified)); foreach (DbEntityEntry entry in entries) { DateTime datetime = DateTime.Now; ((BaseModel)entry.Entity).Modified = datetime; ((BaseModel)entry.Entity).ModifiedById = userId; if (entry.State == EntityState.Added) { WellTableModel wellTableModel = ((BaseModel)entry.Entity).WellTable; if (wellTableModel != null && entry.Property(wellTableModel.IdField).CurrentValue == null) { entry.Property(wellTableModel.IdField).CurrentValue = ((BaseModel)entry.Entity).GetWellId(); } ((BaseModel)entry.Entity).Created = datetime; ((BaseModel)entry.Entity).CreatedById = userId; } else { entry.Property("Created").IsModified = false; entry.Property("CreatedById").IsModified = false; } } //Update Id for BaseBaseModel classes IEnumerable <DbEntityEntry> idEntries = ChangeTracker.Entries().Where(x => x.Entity is BaseBaseModel && (x.State == EntityState.Added)); foreach (DbEntityEntry entry in idEntries) { WellTableModel wellTableModel = ((BaseBaseModel)entry.Entity).WellTable; if (wellTableModel != null && entry.Property(wellTableModel.IdField).CurrentValue == null) { entry.Property(wellTableModel.IdField).CurrentValue = ((BaseBaseModel)entry.Entity).GetWellId(); } } //Set IsModified = false for readonly Properties IEnumerable <DbEntityEntry> readOnlyEntries = ChangeTracker.Entries().Where(x => x.State == EntityState.Added || x.State == EntityState.Modified); foreach (DbEntityEntry entry in readOnlyEntries) { var currentValues = entry.CurrentValues; if (currentValues != null) { foreach (string propertyName in currentValues.PropertyNames) { if (entry.Entity.GetType().GetProperty(propertyName).GetCustomAttribute(typeof(TFOF.Areas.Core.Attributes.ReadOnlyAttribute)) != null) { entry.Property(propertyName).IsModified = false; } } } } //Record Changes AuditModelContext recentUpdateDb = AuditChanges(ChangeTracker, userId); //Records need to be saved first before audit try { int affected = base.SaveChanges(); recentUpdateDb.SaveChanges(userId); return(affected); } catch (DbEntityValidationException ex) { foreach (var entryError in ex.EntityValidationErrors) { foreach (var error in entryError.ValidationErrors) { throw new DbEntityValidationException( "Entity Validation Failed for " + error.PropertyName + ": " + error.ErrorMessage ); // Add the original exception as the inn } } } return(0); }