在配置中找不到指定的商店提供商

时间:2013-04-25 14:18:25

标签: sql-server entity-framework code-first

当我将ASP.NET MVC 4,EF 5.0,Code-First Project发布到测试或生产环境后发生异常时:

(错误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 个答案:

答案 0 :(得分:0)

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