Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

4.6K
Vistas
No se puede crear un objeto de tipo '[Nombre de DBContext]'. Para los diferentes patrones admitidos en tiempo de diseño

Estoy siguiendo uno de los cursos de Mosh Hamedani sobre ASP.NET MVC en Udemy.

Encontré un error al diseñar mi base de datos usando el código primero (Entity Framework).

Al principio, recibí el error de "No se encontró DbContext en el ensamblaje" . Después de resolver este problema, surgió otro de la nada.

La siguiente imagen le mostrará el error encontrado al agregar una migración. Ya he buscado el mismo error pero en vano. Estuve luchando durante las últimas dos horas, pero nada se resolvió hasta ahora.

Por favor, alguien, ayúdame. Gracias

no se puede crear un objeto de tipo 'Vidly_Context'. Para conocer los diferentes patrones admitidos en tiempo de diseño, consulte https://go.microsoft.com/fwlink/?linkid=851728


Problema similar después de agregar su propio constructor DbContext con (2) parámetros. La aplicación estaba bien, pero las migraciones dejaron de funcionar. Solucionado por la primera actualización de EF (3.1.5 usado por una extraña razón cuando se trabaja con 5) usando información de la herramienta Dotnet @xspdf y reemplazando el constructor mencionado por método + cadena de conexión predeterminada codificada si no está configurada.

 dotnet tool update --global dotnet-ef // following command show the most during migration build/run in cmd // mind current dir is Migrations folder of (VS) startup project here dotnet ef --startup-project ../ --verbose migrations add test

3.1.5 y error de activación de contexto

 The Entity Framework tools version '3.1.5' is older than that of the runtime '5.0.0'. Update the tools for the latest features and bug fixes. Finding DbContext classes... Finding IDesignTimeDbContextFactory implementations... Finding application service provider in assembly '...'... Finding Microsoft.Extensions.Hosting service provider... No static method 'CreateHostBuilder(string[])' was found on class 'Program'. No application service provider was found. Finding DbContext classes in the project... Found DbContext '...Context'. Microsoft.EntityFrameworkCore.Design.OperationException: Unable to create an object of type '...Context'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728 ---> System.InvalidOperationException: Unable to resolve service for type 'System.String' while attempting to activate '...'. (my additional parameter) at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.ConstructorMatcher.CreateInstance(IServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance(IServiceProvider provider, Type instanceType, Object[] parameters) at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetServiceOrCreateInstance(IServiceProvider provider, Type type) at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.<>c__DisplayClass13_4.<FindContextTypes>b__13() --- End of inner exception stack trace --- at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.<>c__DisplayClass13_4.<FindContextTypes>b__13() at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(Func`1 factory) at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(String contextType) at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType, String namespace) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType, String namespace) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.<>c__DisplayClass0_0.<.ctor>b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action) Unable to create an object of type '...Context'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728
over 4 years ago · Santiago Trujillo
12 Respuestas
Responde la pregunta

0

Me encontré con el mismo problema. OP mencionó que necesitaban agregar código a su Startup.cs.

En https://go.microsoft.com/fwlink/?linkid=851728 hay el siguiente ejemplo de código;

 public class Startup { public void ConfigureServices(IServiceCollection services) => services.AddDbContext<ApplicationDbContext>(); }

A mi código le faltaba lo siguiente en mi método ConfigureServices;

 services.AddDbContext<ApplicationDbContext>();

Después de agregar esto para el contexto de mi base de datos, el problema se resolvió.

over 4 years ago · Santiago Trujillo Denunciar

0

En el método ConfigureServices del archivo de inicio

 services.AddDbContextPool<contextName>( options => options.UseSqlServer(Configuration.GetConnectionString("conString")));
over 4 years ago · Santiago Trujillo Denunciar

0

este es uno de los problemas más absurdos que jamás haya encontrado con ASP.NET Core. No estoy realmente seguro sobre el curso que mencionó, pero si su aplicación es como la mía, donde la capa de presentación está separada de la capa de datos; asegúrese de instalar la última versión de Microsoft.EntityFrameworkCore.Design en su capa de presentación también como "su proyecto de inicio". Es obligatorio y el mensaje de error no dice nada al respecto.

over 4 years ago · Santiago Trujillo Denunciar

0

Recibí este error después de colocar mi DbContext en una biblioteca de clases separada usando .NET Core 3.1 .

La solución final se veía así que recogió mi cadena de conexión de mis aplicaciones originales appsettings.json :

 using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; using Microsoft.Extensions.Configuration; using System; using System.Collections.Generic; using System.IO; using System.Text; namespace MyNamespace { public class ApplicationDbContextFactory : IDesignTimeDbContextFactory<ApplicationDbContext> { public ApplicationDbContext CreateDbContext(string[] args) { var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .Build(); var optionsBuilder = new DbContextOptionsBuilder(); var connectionString = configuration .GetConnectionString("DefaultConnection"); optionsBuilder.UseSqlServer(connectionString); return new ApplicationDbContext(optionsBuilder.Options); } } }

Entonces podría usar esto en mi otro proyecto así:

 var applicationDbContextFactory = new ApplicationDbContextFactory(); using (var dbContext = applicationDbContextFactory.CreateDbContext(args)) { }
over 4 years ago · Santiago Trujillo Denunciar

0

No es realmente un problema con el marco, es cómo creaste tu aplicación. Por ejemplo, si usó DI y tenía WebApi (o el proyecto MVC) separado de su capa de acceso a datos, esto le ocurrirá porque cuando intenta agregar una migración, su contexto no puede encontrar la cadena de conexión que está tratando de inyectar (este en realidad fue mi caso).

Una buena explicación se encuentra aquí en GitHub :

Definitivamente no es un problema de la aplicación, que es el alcance de los problemas en este repositorio, pero intentaré brindarle alguna orientación de todos modos.

Obtiene ese error porque para generar migraciones necesita:

  1. Un DbContext con un constructor predeterminado (es decir, un constructor sin parámetros)

  2. Ser capaz de obtener el DbContext de ApplicationServices (es decir, inyección de dependencia)

  3. Una fábrica de tiempo de diseño que devuelve un DbContext correctamente configurado.

Dado que el constructor ApplicationDbContext tiene un parámetro, debe usar las opciones 2 o 3. Consulte los detalles en el artículo: https://docs.microsoft.com/ef/core/miscellaneous/cli/dbcontext-creation

Pero la opción 2 (la que se usó originalmente) ya no funciona, porque se cambió el inicio del programa para mejorar el registro.

Y, dado que no hay DesignTimeFactory para ApplicationDbContext, simplemente no podrá crear migraciones en este momento.

Si quieres aprender sobre esta forma de crear migraciones puedes:

Cree una ApplicationDbContextDesignTimeFactory, similar a CatalogContextDesignFactory > o IntegrationEventLogContextDesignTimeFactory, o pruebe con otro microservicio como Catalog.API, que ya tiene su DesignTimeFactory.

over 4 years ago · Santiago Trujillo Denunciar

0

1- Asegúrese de configurar su proyecto web como Establecer como proyecto de inicio

2- En Package Manager Console , configure su capa de acceso a datos (si corresponde) como un proyecto predeterminado

3- Luego ejecute el comando nuevamente

over 4 years ago · Santiago Trujillo Denunciar

0

Si está utilizando un servidor de base de datos debidamente autenticado como Azure SQL DB, verifique si reemplaza Password={your_password} con la contraseña de su servidor en su cadena de conexión.

over 4 years ago · Santiago Trujillo Denunciar

0

En mi caso, hice obligatorio el archivo appsettings.development.json pero no creé el archivo. Si no está creando el archivo de configuración específico del entorno, configúrelo como opcional: verdadero

 var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{environment.EnvironmentName}.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables();

Pero es importante tener en cuenta que es posible que el error no esté necesariamente relacionado con DbContext y sus configuraciones . Podría ser algún otro error en el inicio de la aplicación que impide que la aplicación se inicie para que las herramientas de EF puedan realizar la migración. Como mecanismo para localizar cualquier otro error en el inicio de su proyecto, puede agregar un mensaje de consola en varias líneas de su Inicio. Incluso puede inspeccionar valores de configuración de aplicaciones como cadenas de conexión usando la consola mientras intenta migrar.

 Console.WriteLine("I can see this because the app was able to proceed this far.");
over 4 years ago · Santiago Trujillo Denunciar

0

Si su proyecto de inicio utiliza ASP.NET Core Web Host o .NET Core Generic Host, las herramientas intentan obtener el objeto DbContext del proveedor de servicios de la aplicación; de lo contrario, podría crear el DbContext desde una fábrica en tiempo de diseño ( https:// docs.microsoft.com/es-es/ef/core/miscellaneous/cli/dbcontext-creation ).

over 4 years ago · Santiago Trujillo Denunciar

0

Recibí este error porque faltaba una coma en mi appsettings.json

 { "ConnectionStrings": { "DefaultConnection": "Data Source=Leonardo-Notebook;Initial Catalog=MyDB;Integrated Security=True" }, // <- Comma missing here "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*" }
over 4 years ago · Santiago Trujillo Denunciar

0

El mensaje de error indica que no se pudo crear el contexto en tiempo de diseño. Si especifica en el comando de migración el proyecto de inicio con la marca --startup-project (o -s), puede ayudar al comando a crear la instancia de contexto en tiempo de diseño de forma similar a como se crearía en tiempo de ejecución.

Por ejemplo:

 cd ./project_with_migrations_folder dotnet ef --startup-project ../my_startup_project_path/ migrations add myMigration01
over 4 years ago · Santiago Trujillo Denunciar

0

Me encontré con este problema al usar las migraciones de código primero de EF Core en una solución .NET Core 3 que contenía tanto un proyecto MVC como un proyecto Blazor.

Si tengo el proyecto de inicio de la solución configurado en el proyecto Blazor, recibo el error cuando uso add-migration , pero no lo hago si tengo el proyecto de inicio configurado en el proyecto MVC.

Al leer la página de documentación vinculada por el mensaje de error y comparar el código en los archivos startup.cs para ambos proyectos, no estoy seguro de por qué, pero cambiar temporalmente el proyecto de inicio al proyecto MVC lo soluciona.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda