EF4提供程序未返回Provider Manifest Token字符串

时间:2012-12-22 20:26:00

标签: entity-framework connection-string

是的,还有一个关于提供者清单令牌的问题。不幸的是,之前的所有22个问题都无法解决我的问题。我使用MVC4 + Code First + Sql Express开发简单的Web应用程序。

这是我的背景后代:

public class MCQContext : DbContext
{
    public MCQContext()
        : base("name=ApplicationConnection")
    {

    }
    ...............
}

在这里 - 与问题相关的web.config的一部分:

<configuration>
  <configSections>
    <section name="entityFramework"
             type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
             requirePermission="false" />
  </configSections>

  <connectionStrings>
    <add name="ApplicationConnection"
         connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="name=ApplicationConnection" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>

因此,正如您所看到的,正确的连接字符串传递给上下文类的基础(如果我将连接字符串重命名为“MCQContext”并且不将任何内容传递给父上下文类,则会出现相同的错误。)

我不知道如何修复它。如果我创建绝对空的MVC4应用程序,删除所有包(我更喜欢手动指定所需的程序集而不使用NuGet)并修复引用(包括对sqlserver express的引用),则会再现此行为。

1 个答案:

答案 0 :(得分:0)

此处连接字符串的问题是:

<add name="TrempimModel"
 connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;
                   AttachDBFilename=|DataDirectory|aspnetdb.sdf;
                   User Instance=true"
 providerName="System.Data.SqlClient" />

您基本上定义了您要连接的“服务器” - 但您并未说明要连接到的文件中的数据库。此外 - SQL Server Express数据库文件的文件扩展名是.mdf(不是.sdf - 即SQL Server Compact Edition) - 您也需要考虑到这一点! (根据OP的评论,这是一个错字。)

您需要在连接字符串中定义额外的数据库= ....(或初始目录= .....):

 <add name="TrempimModel"
 connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;
                   database=YourDatabaseName;
                   AttachDBFilename=|DataDirectory|aspnetdb.mdf;
                   User Instance=true"
 providerName="System.Data.SqlClient" />

然后它应该可以正常工作。