No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'.
Solution 1
You need to create a reference, so it will be copied in the debug folder. So later it can accessed in runtime.
Don't to copy any files, just create this reference:
private volatile Type _dependency;
public MyClass()
{
_dependency = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
}
Solution 2
do you have the assembly EntityFramework.SqlServer.dll in your application path? I had the same Problem and after copying the dll into the application path every Thing worked fine.
Solution 3
Finally found the answer in this blog:
http://robsneuron.blogspot.com/2013/11/entity-framework-upgrade-to-6.html
Solution 4
I had this problem too. Everything worked locally when I ran my .net mvc app but when I published it I got this error. The problem was that I had to reference the EntityFrameworl.SqlServer also in my web project alhough I had seperate project for Data. What is strange is that this error was only thrown when app was published. This is some serious bug probably from Microsoft. I used EF 6.1.1.
Solution 5
This is because EntityFramework.SqlServer.dll
is not copied into your project. Add that dll and it will hopefully work.You can find that from the project where you added datamodel.
Dewey
Updated on August 16, 2020Comments
-
Dewey over 3 years
We are using EntityFramework 6 with Code First. We have a console app that has no reference to EntityFramework but reads the connection string from its App.config. It calls the DatabaseInitializationUtilities assembly passing the connection string as a parameter.
DatabaseInitializationUtilities has the reference to EF6 (EntityFramework and EntityFramework.SqlServer). Its App.config is this:
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IAuthentication" /> </basicHttpBinding> </bindings> <client> <endpoint address="http://localhost/SecurityServices/Authentication.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IAuthentication" contract="SecurityService.IAuthentication" name="BasicHttpBinding_IAuthentication" /> </client> </system.serviceModel> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="v11.0" /> </parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> </entityFramework> </configuration>
When execution reaches a line where DatabaseInitializationUtilities attempts to run a script
context.Database.ExecuteSqlCommand(script.ScriptText)
the error is thrown:
No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'. Make sure the provider is registered in the 'entityFramework' section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.
I believe the remedy is exactly what I have in my config file, so I don't understand the problem.
NOTE: Resharper is bluelining the node and reporting "The element 'EntityFramework' has an invalid child element 'providers'. However, the section was injected by NuGet when I installed EF6.
Any ideas?
-
satnhak about 10 yearsEpic win! The reason it fails is that only assemblies that are used directly get copied. This assembly has no direct reference so does not get copied.
-
Channa almost 10 yearsi ran into the same problem and fixed by adding the EntityFramework.SqlServer.dll which was missing
-
ProfK over 9 yearsI think the EF team have some big explaining up to do on this one.
-
Xan-Kun Clark-Davis over 8 yearsYeo, that was the problem for me too... I deleted the whole database and checked out the solution from scratch, and after the first build I got this exact "error massage" :-) Inserted the volatile refrence and it worked.
-
Mike about 8 yearsI had this exact same problem. My reference to the ef assemblies is in a seperate data project referenced from my mvc project. I installed ef from nuget to my mvc project, re-published and it worked. Thanks for the fix
-
Deilan about 8 yearsSo why not briefly mention the main idea of it here?
-
Michael Freidgeim almost 8 years@Deilan the idea is the same as in dh_cgn answer stackoverflow.com/a/21531672/52277
-
DJJ over 7 yearsDownload the dll and add it manually to your primary app. Make sure 'Copy Local = true' under properties. I would not recommend the solution to the question as the workaround code will be deleted when you update your entity model.
-
AH. over 6 yearsThat is really interesting. Not sure how that works, but it does work :-)