I'm trying to create an application by removing all EF dependencies and leaving only the required layers: Repository and Application . I did a little project to test the operation before applying to the actual project to avoid complications, however, the only way I managed to run this project was by using the MyConfiguration class
public class MyConfiguration : DbConfiguration
{
public MyConfiguration()
{
SetProviderServices(
System.Data.Entity.SqlServer.SqlProviderServices.ProviderInvariantName,
System.Data.Entity.SqlServer.SqlProviderServices.Instance);
}
}
Is it possible to remove EF dependencies without using this class and without returning the exception?
An exception of type 'System.InvalidOperationException' occurred in EntityFramework.dll but was not handled in user code Additional Information: No Entity Framework provider found for ADO.NET provider with invariant name 'System.Data.SqlClient'. Make sure the provider is registered in the 'entityFramework' section of the application config file.
Follow the example code:
Context Class
using MvcNorthwindExemplo.Dominio;
using System.Data.Entity;
namespace MvcNorthwindExemplo.Repositorio
{
public class DBNorthwindContext : DbContext
{
public DBNorthwindContext()
: base(@"Data Source=(local); Initial Catalog=NorthwindExemplo; Integrated Security=true")
{
}
public DbSet<Regiao> Regioes { get; set; }
}
}
Repository layer app.config code
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
Repository layer package
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="6.1.3" targetFramework="net451" />
<package id="Glimpse" version="1.8.6" targetFramework="net451" />
<package id="Glimpse.Ado" version="1.7.3" targetFramework="net451" />
<package id="Glimpse.AspNet" version="1.9.2" targetFramework="net451" />
<package id="Glimpse.EF6" version="1.6.5" targetFramework="net451" />
<package id="Glimpse.Mvc5" version="1.5.3" targetFramework="net451" />
</packages>
Application Class
using MvcNorthwindExemplo.Dominio;
using MvcNorthwindExemplo.Repositorio;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
namespace MvcNorthwindExemplo.Aplicacao
{
public class RegiaoAplicacao
{
public DBNorthwindContext db { get; set; }
public RegiaoAplicacao()
{
db = new DBNorthwindContext();
}
public void AddRegiao(Regiao regiao)
{
db.Regioes.Add(regiao);
db.SaveChanges();
}
public void UpdateRegiao(Regiao regiao)
{
db.Entry(regiao).State = EntityState.Modified;
db.SaveChanges();
}
public void Excluir(long? id)
{
var regiao = db.Regioes.Where(r => r.RegiaoID == id).FirstOrDefault();
if (regiao != null)
{
db.Regioes.Remove(regiao);
db.SaveChanges();
}
}
public Regiao GetRegiaoFind(long id)
{
return GetRegiaoAll().Where(r => r.RegiaoID == id).FirstOrDefault();
}
public IEnumerable<Regiao> GetRegiaoAll()
{
return db.Regioes.ToList();
}
}
}
Application Layer.config code
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> </configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
Application layer package
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="6.1.3" targetFramework="net451" />
<package id="Glimpse" version="1.8.6" targetFramework="net451" />
<package id="Glimpse.Ado" version="1.7.3" targetFramework="net451" />
<package id="Glimpse.AspNet" version="1.9.2" targetFramework="net451" />
<package id="Glimpse.EF6" version="1.6.5" targetFramework="net451" />
<package id="Glimpse.Mvc5" version="1.5.3" targetFramework="net451" />
</packages>