尝试使用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);
我尝试了什么:
我仍然不知所措,所以任何帮助都会非常感激。
答案 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;中选择了新模型。窗户和脚手架完成了。
然后我删除了旧模型。
不知道什么被打破,但新模型运作良好。