When do we exactly use IDesignTimeDbContextFactory? I see sometimes ef code migration done without it, specially in net core 3.1 applications.