2013-04-25 81 views
2

当我发表我的ASP.NET MVC 4,EF 5.0,代码优先项目,以测试或发生生产环境以下异常:指定店铺提供商不能在配置中找到

(错误0175:指定的存储提供不能在配置中找到,或者是无效的。)

[MetadataException: Das angegebene Schema ist ungültig. Fehler: 
(0,0) : Fehler 0175: Der angegebene Speicheranbieter kann nicht in der Konfiguration gefunden werden oder ist ungültig.] 
    System.Data.Metadata.Edm.Loader.ThrowOnNonWarningErrors() +57 
    System.Data.Metadata.Edm.StoreItemCollection.Init(IEnumerable`1 xmlReaders, IEnumerable`1 filePaths, Boolean throwOnError, DbProviderManifest& providerManifest, DbProviderFactory& providerFactory, String& providerManifestToken, Memoizer`2& cachedCTypeFunction) +206 
    System.Data.Metadata.Edm.StoreItemCollection..ctor(IEnumerable`1 xmlReaders) +368 
    System.Data.Entity.Migrations.Extensions.XDocumentExtensions.GetStoreItemCollection(XDocument model, DbProviderInfo& providerInfo) +361 
    System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(XDocument sourceModel, XDocument targetModel, String connectionString) +72 
    System.Data.Entity.Migrations.DbMigrator.IsModelOutOfDate(XDocument model, DbMigration lastMigration) +194 
    System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId) +328 
    System.Data.Entity.MigrateDatabaseToLatestVersion`2.InitializeDatabase(TContext context) +150 
    System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) +66 

的SQL服务器上的数据库的创建,以及在数据库中的表。

在本地开发环境一切工作正常。我本地安装了与测试/生产相同的MS SQL Express 2008 R2版本。而且本地的一切都在工作。

正如我用相同的误差(大多与MySQL数据库)上的其他读取,错误固定与包括二进制文件。但对于MSSQL,没有特殊的二进制文件可以包含(我认为)。并且数据库/表被创建,所以对SQL服务器的访问应该没问题。

这里是我的生产/测试的web.config:

<configuration> 
    <configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <connectionStrings> 
    <add name="NameOfContext" connectionString="Server=ServerName\MSSQL;Database=DatabaseName;User Id=Username;Password=Password" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <appSettings> 
    <add key="webpages:Version" value="2.0.0.0" /> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="PreserveLoginUrl" value="true" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 
... 
    <entityFramework> 
    <contexts> 
     <context type="NameOfContext, Application name"> 
     <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[NameOfContext, Application Name], [Name_App.Migrations.Configuration, Application Name]], EntityFramework, PublicKeyToken=b77a5c561934e089"> 
      <parameters> 
      <parameter value="NameOfContent" /> 
      </parameters> 
     </databaseInitializer> 
     </context> 
    </contexts> 
    </entityFramework> 
+1

如果它说的程序无法找到,那么无论它需要的程序不存在,或者用户没有权限看到它。在这种情况下,我使用SQL配置文件准确观察发生了什么。通常情况下,这会为您提供许多关于正在发生的事情的信息,并带领您朝着正确的方向前进。 – mroach 2013-04-25 14:29:48

+0

好的,什么是SQL Profile? – IFY 2013-04-25 22:06:28

+0

我的意思是SQL Profiler。这是SQL Server管理工具附带的一个实用程序。它允许您查看服务器上的所有活动,包括正在运行的命令。 – mroach 2013-04-26 16:17:32

回答

0

我已经“解决”的问题:我创建了一个新的项目,并复制所有的代码到新的项目中,该问题不再出现了。 也许这是自动迁移的问题。尽管我运行'update-database -targetmigration:0'并重新创建所有迁移。

相关问题