实体框架探查器 - 带有 EF 6 的 ASP.NET MVC4 - 无法确定提供程序名称

Posted

技术标签:

【中文标题】实体框架探查器 - 带有 EF 6 的 ASP.NET MVC4 - 无法确定提供程序名称【英文标题】:Entity Framework profiler - ASP.NET MVC4 with EF 6 -Unable to determine the provider name 【发布时间】:2013-11-23 01:24:57 【问题描述】:

我在我的 ASP.NET MVC4 项目中使用 EF 6 已经有一段时间了,没有任何问题。

当我将 Entity Framework Profiler 添加到项目时出现问题,然后突然出现以下错误:“无法确定类型为‘System.Data.SqlClient.SqlClientFactory’的提供程序工厂的提供程序名称。确保ADO.NET 提供程序已安装或在应用程序配置中注册。"

我尝试了一些建议,包括 bin 文件夹中不存在“EntityFramework.SqlServer.dll”的问题。

堆栈跟踪:

System.Data.Entity.Config.DefaultInvariantNameResolver.GetService(Type type, Object key) +440
System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) +83
System.Data.Entity.Config.CachingDependencyResolver.GetService(Type type, Object key) +179
System.Linq.WhereSelectArrayIterator`2.MoveNext() +82
System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source, Func`2 predicate) +215
System.Linq.WhereSelectArrayIterator`2.MoveNext() +82
System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source, Func`2 predicate) +215
System.Data.Entity.Config.CompositeResolver`2.GetService(Type type, Object key) +71
System.Data.Entity.Config.IDbDependencyResolverExtensions.GetService(IDbDependencyResolver resolver, Object key) +84
System.Data.Entity.Internal.InternalConnection.get_ProviderName() +112
System.Data.Entity.Internal.DefaultModelCacheKeyFactory.Create(DbContext context) +120
System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +319
System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +26
System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +72
System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() +21
System.Data.Entity.Internal.Linq.InternalSet`1.Find(Object[] keyValues) +40

Web.config:

  <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>

连接细节:

<add name="MyProject" connectionString="Server=.\SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />

你知道是什么原因造成的吗?

注意事项:

我正在使用 ninject 来处理依赖注入 我最近升级到 EF 6.0.1

【问题讨论】:

【参考方案1】:

只是作为一个提示。如果您将 Glimpse ef6 安装到您的项目中,也可能会引发此错误。

我一安装 Glimpse EF6 就遇到了这个错误。卸载 Glimpse EF6 解决了这个问题。

【讨论】:

【参考方案2】:

这是由实体框架分析器中的错误引起的,已在 build 2214 中修复(请参阅:http://hibernatingrhinos.com/builds/uber-prof-v2/2214)

【讨论】:

我仍然在构建 3069 中得到错误。这可能是因为我使用了我自己的 sqlconnection,它通过 dbcontext 的构造函数传递。我没有找到任何关于此的文章。 @MarcusDock 我正在使用构建 3079 并且仍然存在同样的问题。有人有类似的问题吗?

以上是关于实体框架探查器 - 带有 EF 6 的 ASP.NET MVC4 - 无法确定提供程序名称的主要内容,如果未能解决你的问题,请参考以下文章

带有 dnx 项目的 EF 6

带有实体框架 4 的 LLBLGen Pro?

带有 Ntier 的实体框架

EF 6.X 中的实体框架代码优先 Fluent API 默认值

实体框架的性能问题

带有 SQL 的 Visual Studio 2010 探查器