Ejecución de código personalizado en migraciones EF

Trabajando con las migraciones Entity Frameworks exitosamente en nuestro proyecto. Pero ahora me encuentro con un caso especial en el que necesito actualizar una tabla que necesita algo de lógica empresarial (que se encuentra en nuestra aplicación como código C #). Así que traté de engendrar un hilo en las migraciones.Up Método y haciendo esta actualización de tabla con la lógica de negocio. Esta actualización de la tabla no es necesaria para la ejecución de la aplicación y debe realizarse en segundo plano.

Estoy haciendo esto de esta manera:

public partial class MyMigration : DbMigration
{
  public override void Up()
  {
     // ... do some sql migration here ...

     // after executing the sql migrations custommethod should run
     // migration seems to wait until CustomMethod finished work
     new Thread(() => ExecuteCustomMethodDatabaseContext()).Start();
  }
}

Yo esperaría que elUp el método regresa después de iniciar el subproceso y EF establece la migración en MigrationHistory para que se realice. Por lo tanto, la aplicación puede iniciarse y, en algún lugar del fondo, la tabla se actualiza.

Pero no es así, las migraciones parecen ejecutarse mientras se ejecuta el subproceso (esto lleva mucho tiempo).

Así que mis preguntas de acuerdo:

¿Es una buena práctica en general ejecutar código personalizado en migraciones DB?Si no, ¿cómo puedo satisfacer la necesidad de ejecución de código personalizado en mi caso? (sin volver a escribir la lógica de negocios en un procedimiento almacenado o algo así)Si es así, ¿qué estoy haciendo mal? ¿Cómo puedo ejecutar este código dentro de una migración y sin bloquearlo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta