Mvc 4添加带脚手架的控制器给出错误 - “无法检索元数据......”

时间:2013-01-23 16:00:00

标签: c# sql-server asp.net-mvc

尝试使用CRUD操作和EF添加控制器时出现以下错误:

  

无法检索LetLord.Models.Tenant的元数据。不支持使用相同的DbCompiledModel为不同类型的数据库创建上下文。而是为正在使用的每种类型的服务器创建单独的DbCompiledModel。

添加控制器对话框设置:

模板:使用EF进行读/写操作和视图的MVC控制器。

模型类:租户(LetLord.Models)

数据上下文类: LetLordContext(LetLord.Models)

我见过类似的问题/问题,并尝试了所提供的解决方案,但我无法让它发挥作用。

我的连接字符串:

<connectionStrings>
<add name="LetLordContext" connectionString="Data Source=|DataDirectory|LetLord.Models.LetLordContext.sdf" providerName="System.Data.SqlServerCe.4.0" />
  </connectionStrings>

LetLordContext.cs中,我没有默认构造函数。在我的InitializeSimpleMembershipAttribute.cs课程中,我致电

WebSecurity.InitializeDatabaseConnection("LetLordContext", "UserProfile", "UserId", "UserName", autoCreateTables: true);

我尝试了什么:

  • 按照不同的问题更改我的提供商名称。
  • 删除了连接字符串对其进行了评论。
  • 删除并重新安装实体框架。
  • 确保我已安装SQL Server CE 4.0。
  • 在subversion上恢复了我的项目的早期版本。

我仍然不知所措,所以任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:4)

找到了解决方法,但我仍然没有注意到导致此错误的原因。

在root web.config文件中我更改了

<connectionStrings>
 <add name="LetLordContext" connectionString="Data Source=|DataDirectory|LetLord.Models.LetLordContext.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

<connectionStrings>
 <add name="DefaultConnection" connectionString="Data Source=|DataDirectory|LetLord.Models.LetLordContext.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

这让我用脚手架添加视图,一旦添加,我将字符串更改回原来的状态。据我所知,任何新字符串都可以。

答案 1 :(得分:0)

这个解决方案有点笨拙,但在尝试了几个解决方案后,我不得不再次行动。我决定创建一个具有不同名称的新模型,并将类内部复制到新模型中。然后我在&#34;添加控制器&#34;中选择了新模型。窗户和脚手架完成了。

然后我删除了旧模型。

不知道什么被打破,但新模型运作良好。