在Visual Studio 2012中创建Controller时出错

New*_*yCD 14 sql-server asp.net asp.net-mvc

我正在尝试学习ASP.NET MVC,所以我在asp.net网站上关注音乐商店教程.

我使用Album.cs作为模型类创建StoreManagerController,使用MusicStoreEntities.cs作为数据上下文类.

创建Controller时的错误是:无法检索"MvcMusicStore.Models.Album"的元数据.不支持使用相同的DbCompiledModel为不同类型的数据库服务器创建上下文.而是为每种使用的服务器创建一个单独的DbCompiledModel.

听起来我正在使用两个不同的数据库,但这是我在Web.config中的连接字符串部分:

<connectionStrings>
<add name="MusicStoreEntities" providerName="System.Data.SqlServerCe.4.0" connectionString="Data Source=|DataDirectory|\MvcMusicStore.sdf"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果我注释掉MusicStoreEntities连接字符串,然后尝试创建它可以工作的StoreManagerController.如果我将解决方案设置中的目标框架更改为.NET Framework 4,在Visual Studio 2010中打开解决方案,然后创建Controller,它也可以工作.

那么Visual Studio 2012或连接字符串是一个问题吗?可能与CE4.0和VS2012有一些兼容性问题?

Nex*_*s23 19

问题在于使用教程中使用的CE版数据库.切换到SQL Server 2012等其他数据库版本时,它对我来说效果很好.试试这个:

更改此连接字符串

<add name="MusicStoreEntities" connectionString="Data Source=|DataDirectory|MvcMusicStore.sdf" providerName="System.Data.SqlServerCe.4.0"/>
Run Code Online (Sandbox Code Playgroud)

 <add name="MusicStoreEntities" connectionString="Data Source=DBInstanceName;Initial Catalog=MvcMusicStore;Integrated Security=True" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)


Boh*_*ets 8

MVC4中添加控制器重复不起作用,MVC4脚手架添加控制器出现错误"无法检索元数据......"

尝试注释连接字符串并在创建控制器时使用默认值.

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=MvcMusicStore;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\MvcMusicStore.mdf" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)

创建后返回连接字符串.