1

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

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

添加控制器对话框设置:

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

模型类:租户(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。
  • 在颠覆上恢复到我项目的早期版本。

我仍然不知所措,所以任何帮助将不胜感激。

4

2 回答 2

4

找到了解决方法,但我仍然不知道导致此错误的原因。

在我更改的根 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>

这让我可以使用脚手架添加视图,添加后,我将字符串改回原来的样子。据我所知,任何新字符串都可以。

于 2013-01-24T14:28:50.483 回答
0

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

然后我删除了旧模型。

不知道是什么坏了,但新模型运行良好。

于 2016-01-12T18:18:51.330 回答