EF provider type names should include full assembly information


Currently assembly-qualified like this:
System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer
are used to load the EF provider, either by convention or when specified in the config. This does not work when the EF assemblies are GAC'ed. Instead full assembly information must be used:
System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089
We never GAC the EF assemblies and we recommend that they are bin-deployed, but we cannot prevent people from putting the assemblies in the GAC.
Closed Apr 29, 2013 at 10:20 PM by lukew
Verified fixed


ajcvickers wrote Apr 27, 2013 at 12:04 AM

Fixed in d1b69787cd88

GACAttack (Make by-convention loading of SQL Server provider use type name with version and public key token)

This fixes the issue where the SQL Server provider would fail to load when the EF assemblies are GACed and no provider is registered.

Since EF is never GACed automatically and bin-deployment is strongly preferred over GACing there is no change made to the entries added in the config file by default. This means that if EF is GACed and the config files are being used, then they may need to be manually updated to contain extra type information. By not doing this for everyone we improve the experience for the vast majority who are not GACing at the expense of an extra step for those who are.