Reputation: 869
I'm constructing a DbContext from an SqlConnection. When I use it, I receive the following error:
The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' for the 'System.Data.SqlClient' ADO.NET provider could not be loaded.
I'm using 6.0.0-alpha2-11210.
I found that weird since I have a reference toward Entity.SqlServer and that I managed to 'fix it' by putting the following line of code before a query:
var patch_only = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
Is it a bug of the alpha version?
Upvotes: 22
Views: 36663
Reputation: 9
I solved the problem by copying the two files
EntityFramework.SqlServer.dll
EntityFramework.SqlServer.xml
to the /bin
.
Upvotes: -2
Reputation: 925
If you are having problems with a brand new MVC site from the template: 1) Uninstall Microsoft.ASPNet.Identity.EntityFramework (It will ask you if you want to uninstall Entity Framework - go ahead and do that.) 2) Install Entity Framework 3) Reinstall Microsoft.ASPNET.Identity.EntityFramework
Should be working now.
Upvotes: 0
Reputation: 5723
I added a screencast at Youtube describing this and the solution in about 6 minutes. I did this because the solution provided by Fabrice is not working when you work with Team Build which runs into the same issue.
Upvotes: 0
Reputation: 415
I am using EF 4 and EF 6 two different projects in the same solution.
After using NuGet for EF 6.0 all references to EF 4 where removed in my test Project. I had to remove EF6 from the project again and added references to System.Data.Entity for EF4.
To access data thru EF6 in the test Project I had to manually reference the EntityFramework.SqlServer.dll (4.5) and used the hack (above) recommendation.
There was no need to do any alternations in the app.config of my test project.
no
<section name="entityFramework" ...
and no
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> ...
Upvotes: 1
Reputation: 101
The problem is the "EntityFramework.SqlServer" reference.
In my project, when I added Entity Framework 6.0.1 by using NuGet in data access layer, I got the same error in the client side since client side doesn't have that reference.
So, I solved the issue by adding that reference into the client side, too.
Upvotes: 10
Reputation: 2186
@LeLong37
I had exactly the same error like you: "... No Entity Framework provider found for 'System.Data.SqlServerCe.4.0' ADO.NET provider..."
I solved it by adding a reference to "EntityFramework.SqlServerCompact" from directory "packages\EntityFramework.SqlServerCompact.6.0.0-rc1\lib\net40"
hope this helps
Upvotes: 0
Reputation: 3100
What you did creates a reference to EntityFramework.SqlServer.dll. It ensures that this assembly gets copied over to the bin folder of projects using you data access assembly.
You can do the same by adding something like the following somewhere in your data access assembly:
Type _Hack = typeof(System.Data.Entity.SqlServer.SqlProviderServices)
Upvotes: 38
Reputation: 26028
I hope I am not late. I am using ASP.NET MVC
4 and Entity Framework 6 alpha 3
and ran into a similar problem.
I have multiple projects in my solution. The 2 main projects are:
MyProject.Infrastructure.EntityFramework
MyProject.Web
In the first project I would set up all my repositories, DbContext
, etc etc. In this project I have 2 references:
EntityFramework
EntityFramework.SqlServer
The second project is my website. It uses the repositories in the first project to return my data. For example:
private readonly IMyRepository myRepository;
public MyController(IMyRepository myRepository)
{
this.myRepository = myRepository;
}
public ActionResult Details(int id)
{
MyObject myObject = myRepository.FindById(id);
return View();
}
This is where I had my issues, calling FindById
.
All that I did was to add the following reference to my website:
EntityFramework.SqlServer
In my web.config:
<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>
And beneath the closing system.webServer
tag:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
I hope this will help.
Upvotes: 13