paint-brush
ASP.NET Core — Cómo usar la inyección de dependencia en Entity Framework Corepor@yogihosting
126,688 lecturas
126,688 lecturas

ASP.NET Core — Cómo usar la inyección de dependencia en Entity Framework Core

por Yogi2019/01/04
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

<strong>ASP.NET Core</strong> tiene una excelente función de <strong>Inyección de dependencia</strong> a través de la cual este marco le proporciona un objeto de cualquier clase que desee. Por lo tanto, no tiene que crear manualmente el objeto de clase en su código.

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - ASP.NET Core — Cómo usar la inyección de dependencia en Entity Framework Core
Yogi HackerNoon profile picture

Inyección de dependencia con Entity Framework Core

ASP.NET Core tiene una excelente función de Inyección de dependencia a través de la cual este marco le proporciona un objeto de cualquier clase que desee. Por lo tanto, no tiene que crear manualmente el objeto de clase en su código.

En este tutorial te enseñaré a usar el método de Inyección de Dependencia en Entity Framework Core . Esto le permitirá obtener los siguientes beneficios:

1. El objeto de la clase 'DbContext' a través de la inyección de dependencia.

2. Obtenga la cadena de conexión de 'appsettings.json' en lugar del método 'OnConfiguring()' de la clase 'DbContext'.

Cadena de conexión dentro del método OnConfiguring()

Normalmente, proporciona la cadena de conexión de su base de datos en el método OnConfiguring() de la clase DbContext de esta manera:





invalidación protegida void OnConfiguring(DbContextOptionsBuilder optionsBuilder){if (!optionsBuilder.IsConfigured){optionsBuilder.UseSqlServer(@"Server=Smile;Database=Shop;Trusted_Connection=True;");

 }

}

Este enfoque no es bueno ya que es mejor almacenar la cadena de conexión en el archivo appsettings.json . Después de aplicar la inyección de dependencia en Entity Framework Core , simplemente puede eliminar todo dentro del método OnConfiguring() de esta manera:






invalidación protegida void OnConfiguring(DbContextOptionsBuilder optionsBuilder){if (!optionsBuilder.IsConfigured){}}

Debe hacer los siguientes 3 cambios como se describe a continuación:

1. Cree el archivo appsettings.json para almacenar la cadena de conexión de la base de datos

El código para el archivo appsettings.json que almacena el valor de la cadena de conexión de la base de datos se proporciona a continuación:





{"ConnectionStrings": {"DefaultConnection": "Server=Smile;Database=Shop;Trusted_Connection=True;"}}

2. Cree el archivo appsettings.json para almacenar la cadena de conexión de la base de datos

En su clase DbContext , vaya y agregue el constructor que hereda la clase base. También elimine la cadena de conexión del método OnConfiguring() . El código de la clase DbContex debería ser:




public class ShopContext : DbContext{public ShopContext(DbContextOptions<ShopContext> options) : base(options) { }public DbSet<Products> Products { get; establecer; }

 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { }

}

3. Agregue la clase DbContext como un servicio en la clase Startup.cs

Cambie la clase Startup.cs para obtener el objeto IConfiguration del espacio de nombres Microsoft.Extensions.Configuration en su Constructor.

Dentro del constructor, establezca el valor de una propiedad pública de tipo IConfiguration con el valor del objeto IConfiguration dado en su parámetro.

El código para esto es:




Public Startup(IConfiguration configuración){Configuración = configuración;}

Configuración pública de IConfiguration { get; }

Este cambio lo ayudará a leer el archivo appsettings.json en la clase Startup.cs .

A continuación, agregue la clase DbContext como un servicio dentro del método ConfigureService() . Vea el siguiente código:

services.AddDbContext<ShopContext>(opciones => opciones.UseSqlServer(Configuración["ConnectionStrings:DefaultConnection"]));

El código actualizado de la clase Startup debe ser:






inicio de clase pública {inicio público (configuración de IConfiguration) {Configuración = configuración;}

 public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.AddDbContext<ShopContext>(options => options.UseSqlServer(Configuration\["ConnectionStrings:DefaultConnection"\])); services.AddMvc(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseStaticFiles(); app.UseDeveloperExceptionPage(); app.UseMvc(routes => { routes.MapRoute(name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }

}

Obtenga el objeto DbContext en el controlador usando la inyección de dependencia

Ahora está listo y permítame mostrarle cómo obtener el objeto de la clase DbContext en el Constructor mediante Inyección de dependencia . Todo lo que tiene que hacer es agregar el objeto de clase DbContext en el constructor del controlador y establecerle un valor de propiedad pública.

Puede aprender todo sobre la función Inyección de dependencias en este tutorial: Inyección de dependencias en ASP.NET Core

Agrega el siguiente código al Constructor:

ShopContext privado shopContext;




Controlador de inicio público (Contexto de tienda sc){Contexto de tienda = sc;}

Ahora está listo para usar Entity Framework Core para comunicarse con la base de datos.

Para leer registros de la base de datos:

shopContext.Teacher;

Para crear registros en la base de datos:


shopContext.Products.Add(producto);shopContext.SaveChanges();

Consulte el código actualizado del controlador que también enumera los métodos de acción que lee e inserta registros.







clase pública HomeController : Controlador{private ShopContext shopContext;public HomeController(ShopContext sc){shopContext = sc;}

 public IActionResult Index() { return View(shopContext.Teacher); } public IActionResult Create() { return View(); } \[HttpPost\] public IActionResult Create\_Post(Products product) { if (ModelState.IsValid) { shopContext.Products.Add(product); shopContext.SaveChanges(); return RedirectToAction("Index"); } else return View(); }

}

Conclusión

Espero que les guste este tutorial sobre Entity Framework Core con Dependency Injection . Es solo un paso para mejorar su código. Si te gusta este tutorial, dame algunos aplausos y sígueme para 1 tutorial sobre desarrollo web cada semana.

Consulte también mi otro artículo en HACKERNOON: 7 problemas comunes de desarrollo web que todos los desarrolladores, desde principiantes hasta expertos, deben conocer [con múltiples soluciones]