/// <summary> /// Update the model but keeps the privaty/audit fields from being updated. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="entity"></param> /// <param name="update"></param> public static void DoUpdateModel <T>(this IEntity entity, Action <T> update) { if (entity == null) { return; } // 1. Get the original values. int id = entity.Id; DateTime createDate = entity.CreateDate; DateTime updateDate = entity.UpdateDate; string createUser = entity.CreateUser; string updateUser = entity.UpdateUser; string comment = entity.UpdateComment; int version = 0; int versionRefId = 0; bool hasVersion = entity is IEntityVersioned; IEntityVersioned versioned = null; if (hasVersion) { versioned = entity as IEntityVersioned; version = versioned.Version; versionRefId = versioned.VersionRefId; } // 2. Update model from the form values. update((T)entity); // 3. Now apply the values back entity.Id = id; entity.CreateUser = createUser; entity.UpdateUser = updateUser; entity.CreateDate = createDate; entity.UpdateDate = updateDate; entity.UpdateComment = comment; if (hasVersion) { versioned.Version = version; versioned.VersionRefId = versionRefId; } }
/// <summary> /// Update the model but keeps the privaty/audit fields from being updated. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="entity"></param> /// <param name="original"></param> public static void DoUpdateModel <T>(this IEntity entity, IEntity original) { if (entity == null || original == null) { return; } entity.CreateUser = original.CreateUser; entity.CreateDate = original.CreateDate; entity.UpdateComment = entity.UpdateComment; entity.UpdateDate = entity.UpdateDate; entity.UpdateUser = entity.UpdateUser; if (entity is IEntityVersioned && original is IEntityVersioned) { IEntityVersioned newVEntity = entity as IEntityVersioned; IEntityVersioned origVEntity = original as IEntityVersioned; newVEntity.Version = origVEntity.Version; newVEntity.VersionRefId = origVEntity.VersionRefId; } }