Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

4.6K
Views
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 answers
Answer question

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!