Reputation: 213
I have 2 projects in my solution: the first one is a ClassLibrary and the second is my Application. I'm using Entity Framework (Code First method) with Sql Server Compact in my second project. The question is how can I use the same database in bith my projects? I've tried to move all my Entities, DbContext and GenericRepository to my Library and I also tried to set connection string inside the code, but I keep receiving IInvalidOperationException:
The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.
Here is my app.config:
<?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" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0" />
<add name="Microsoft SQL Server Compact Data Provider 4.0"
invariant="System.Data.SqlServerCe.4.0"
description=".NET Framework Data Provider for Microsoft SQL Server Compact"
type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>
</system.data>
</configuration>
Upvotes: 6
Views: 5331
Reputation: 3511
It seems you use Default Connection Factory. Did you try define connection strings with datasource parameter and indication on .sdf file?
<connectionStrings>
<add name="ConnectionStringName"
providerName="System.Data.SqlServerCe.4.0"
connectionString="Data Source=|DataDirectory|\DatabaseFileName.sdf" />
</connectionStrings>
If it won't work, I've got one more idea. You're logging in by Windows Authentication. Maybe it's not possible to make two parallel connections via the same credentials? I'm not sure, but try to check other way than windows authentication.
Upvotes: 1
Reputation: 4808
The error seems to indicate that there is an assembly reference missing. Open up the other project, make sure the one with the problem has all the same references.
Take a look at this similar question Entity Framework Provider type could not be loaded?
Upvotes: 1
Reputation: 2856
Try to check if Entity Framework is referenced in the starting project and if Entity Framework configurations are set on application configuration file of that project as well.
Upvotes: 5