MVC"添加控制器"是"无法检索元数据...配置系统无法初始化"

Bre*_*ias 10 asp.net-mvc entity-framework visual-studio

从头开始,我用两个项目创建了一个新的解决方案:一个是MVC 3,另一个是支持EF 4.2项目.整个事情成功建立.从MVC项目中,我打开"添加控制器"对话框,让它根据我从支持的EF项目中选择的上下文和模型生成代码."添加控制器"对话框失败,并显示以下消息:

无法检索"MyModelClass"的元数据.配置系统无法初始化.

我注意到"添加控制器"对话框实际上是在尝试从其web.config文件中获取数据库连接字符串.首先,由于支持EF项目已经有一个带有连接字符串的app.config,这让我觉得很愚蠢.但是从来没有意识到,我能想到的最好的是web.config中的连接字符串不知何故.这就是它的样子:

<add name="Monsters2Entities" 

    connectionString="
      metadata=res://*/Monsters.csdl|
               res://*/Monsters.ssdl|
               res://*/Monsters.msl;
      provider=System.Data.SqlClient;
      provider connection string=&quot;
        data source=.;
        initial catalog=Monsters2;
        integrated security=True;
        pooling=False;
        multipleactiveresultsets=True;
        App=EntityFramework
      &quot;" 
      providerName="System.Data.EntityClient" 
/>
Run Code Online (Sandbox Code Playgroud)

连接字符串实际上没有所有荒谬的换行符和缩进 - 我只是想让它更容易阅读.无论如何,该连接字符串基本上与在其上建模的支持EF项目中使用的连接字符串相同.如何纠正这种情况,让"添加控制器"拨号开心?

小智 8

我安装了EF 6,它增加了:

<providers>
    <provider invariantName="System.Data.SqlClient" 
        type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
Run Code Online (Sandbox Code Playgroud)

在我的配置文件中.我有其他脚手架问题,因此决定回到Ef 5.卸载EF 6并重新安装EF 5后,我从配置中删除了,然后我就能够构建我的新控制器了.我发现这是通过使用

PM> Update-Database –Verbose
Run Code Online (Sandbox Code Playgroud)


cdi*_*zal 1

尝试这个:

<add name="Monsters2Entities" 

    connectionString="
      metadata=res://*/Monsters.csdl|
               res://*/Monsters.ssdl|
               res://*/Monsters.msl;
      provider=System.Data.SqlClient;
      provider connection string='
        data source=.;
        initial catalog=Monsters2;
        integrated security=True;
        pooling=False;
        multipleactiveresultsets=True;
        App=EntityFramework
      '" 
      providerName="System.Data.EntityClient" 
/>
Run Code Online (Sandbox Code Playgroud)

我已经替换&quot;'