Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Entity Framework Provider type could not be loaded?

I am trying to run my tests on TeamCity which is currently installed on my machine.

System.InvalidOperationException:

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. Make sure the provider assembly is available to the running application.

See http://go.microsoft.com/fwlink/?LinkId=260882 for more information..

I have no reference to System.Data.Entity in any of my projects as was suggested on codeplex for upgrading to EF6.

So, I am not sure why am I getting this exception. I do not get any such exception when I run the tests from VS.

I did try to set CopyLocal to false then again to true.. but that does not seem to work either.

Update

My app.config has the following . Does this cause some behavior that I don't understand ?

<?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.SqlConnectionFactory, EntityFramework" />   </entityFramework> </configuration> 

I get the following stacktrace in teamcity .

[MSTest] IntegrationTests.CrudTest+QuestionTest.Create [03:59:11][IntegrationTests.CrudTest+QuestionTest.Create] Initialization method IntegrationTests.CrudTest+QuestionTest.Initialize threw exception. System.InvalidOperationException: System.InvalidOperationException: 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. Make sure the provider assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.. [03:59:11] [IntegrationTests.CrudTest+QuestionTest.Create]     at System.Data.Entity.Config.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName)    at System.Data.Entity.Config.ProviderServicesFactory.GetInstanceByConvention(String providerInvariantName)    at System.Data.Entity.Config.DefaultProviderServicesResolver.GetService(Type type, Object key)    at System.Data.Entity.Config.CachingDependencyResolver.<>c__DisplayClass1.<GetService>b__0(Tuple`2 k)    at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)    at System.Data.Entity.Config.CachingDependencyResolver.GetService(Type type, Object key)    at System.Data.Entity.Config.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r)    at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()    at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)    at System.Data.Entity.Config.ResolverChain.GetService(Type type, Object key)    at System.Data.Entity.Config.RootDependencyResolver.GetService(Type type, Object key)    at System.Data.Entity.Config.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r)    at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()    at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)    at System.Data.Entity.Config.ResolverChain.GetService(Type type, Object key)    at System.Data.Entity.Config.CompositeResolver`2.GetService(Type type, Object key)    at System.Data.Entity.Config.IDbDependencyResolverExtensions.GetService[T](IDbDependencyResolver resolver, Object key)    at System.Data.Entity.Config.InternalConfiguration.GetService[TService](Object key)    at System.Data.Entity.Config.DbConfiguration.GetService[TService](Object key)    at System.Data.Entity.Utilities.DbProviderFactoryExtensions.GetProviderServices(DbProviderFactory factory)    at System.Data.Entity.Infrastructure.DefaultManifestTokenService.GetProviderManifestToken(DbConnection connection)    at System.Data.Entity.Utilities.DbConnectionExtensions.GetProviderInfo(DbConnection connection, DbProviderManifest& providerManifest)    at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)    at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)    at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)    at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()    at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)    at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()    at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()    at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)    at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)    at System.Data.Entity.DbSet`1.Add(TEntity entity)    at EFRepository.Infrastructure.EFRepository`1.Add(T item) in c:\TeamCity\buildAgent\work\da2ea4e72c0e77f0\Repository\Infrastructure\EFRepository.cs:line 22    at IntegrationTests.CrudTest.Initialize() in c:\TeamCity\buildAgent\work\da2ea4e72c0e77f0\IntegrationTests\CrudTest.cs:line 34 
like image 774
ashutosh raina Avatar asked Dec 25 '12 18:12

ashutosh raina


2 Answers

Same problem, but i installed EF 6 through Nuget. EntityFramework.SqlServer was missing for another executable. I simply added the nuget package to that project.

like image 94
Narcis Avatar answered Oct 08 '22 06:10

Narcis


I had the same problem in my Test projects - I installed the latest EF6 bits via NuGet and everytime I invoke something EF-related I got:

The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' for the 'System.Data.SqlClient' ADO.NET provider could not be loaded. Make sure the provider assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

My workaround: I placed this method inside my test project:

public void FixEfProviderServicesProblem() { //The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' //for the 'System.Data.SqlClient' ADO.NET provider could not be loaded.  //Make sure the provider assembly is available to the running application.  //See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.  var instance = System.Data.Entity.SqlServer.SqlProviderServices.Instance; } 

This method is never been called, but I think the compiler will remove all "unnecessary" assemblies and without using the EntityFramework.SqlServer stuff the test fails.

Anyways: Works on my machine ;)

Note: Instead of adding the method to test project you can ensure a static reference to SqlProviderServices from your Model/entity project.

like image 42
Robert Muehsig Avatar answered Oct 08 '22 07:10

Robert Muehsig