Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Permitindo o uso de LojaContext com outros providers

No curso Entity Framework Core: Banco de dados de forma eficiente, foi exemplificado uma forma de permitir que o contexto criado se conecte a sistemas de gerenciamentos de banco de dados distintos, como foi citado o MySql por exemplo. Foi então mencionado o termo injeção de dependência e ilustrado com um código. Gostaria de saber sobre injeção de dependência e como ela se aplicou no código e como o mesmo funciona para se conectar a diferentes bancos, pois, fiquei com dúvidas nessa parte.

using Microsoft.EntityFrameworkCore;

namespace Alura.Loja.Testes.ConsoleApp
{
    public class LojaContext : DbContext
    {
        public DbSet<Produto> Produtos { get; set; }

        public LojaContext()
        {  }

        public LojaContext(DbContextOptions<LojaContext> options): base(options)
        {  }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
                optionsBuilder
                    .UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=LojaDB;Trusted_Connection=true;");
            }
        }
    }
}
1 resposta
solução!

Olá, Luiz Guilherme

Para saber mais sobre injeção de dependência com Asp.Net Core:

https://docs.microsoft.com/pt-br/aspnet/core/fundamentals/dependency-injection

De acordo com o documento da Microsoft, você pode configurar seu contexto para trabalhar com outros gerenciadores além do SQL Server, como é por exemplo o SQLite:

https://docs.microsoft.com/pt-br/ef/core/miscellaneous/configuring-dbcontext

var optionsBuilder = new DbContextOptionsBuilder<BloggingContext>();
optionsBuilder.UseSqlite("Data Source=blog.db");

using (var context = new BloggingContext(optionsBuilder.Options))
{
  // do stuff
}

Mas note que, para usar o banco SQLite, é necessário instalar o pacote adequado:

https://docs.microsoft.com/en-us/ef/core/providers/sqlite/

Já para o MySQL, atualmente (início de 2018), o provider para EF Core gratuito, disponível e estável é o Pomelo.EntityFrameworkCore.MySql:

https://www.nuget.org/packages/Pomelo.EntityFrameworkCore.MySql