1

尝试使用脚手架添加控制器并收到错误。似乎与我的连接字符串有关。

"unable to retrieve metadata for DOTNETMEMBER.Song. Failed to set database initializer type of type DOTNET.DataContextInitializer, DOTNETMEMBER' specified in the application configuration. Entries should be in the form of 'key=DatabaseInitializerForType MyNamespace.MydbContextClass, MyAssembly'. 初始化类必须有无参数构造函数。有关详细信息,请参阅内部异常。

这是我的连接字符串

  <connectionStrings>
    <add name="DataContext"
         connectionString="Data Source=|DataDirectory|RTDOTNETMEMBER.sdf"
         providerName="System.Data.SqlServerCe.4.0" />
  </connectionStrings>

  <appSettings>
    <add key="webpages:Version" value="1.0.0.0"/>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
    <!--Used to initialize the database-->
    <add key="DatabaseInitializerForType DOTNET.DataContext, DOTNETMEMBER" value="DOTNET.DataContextInitializer, DOTNETMEMBER" />
  </appSettings>

是因为 SQL Compact 吗?

4

1 回答 1

2

恐怕这不是一个全面的答案,因为我不完全理解其中的原因,但是当我遇到同样的问题时,这个解决方法让我可以继续做事,不再摸不着头脑:

  1. 进入 Web.config 并注释掉包含该DatabaseInitializerForType键的行(快捷方式:将光标放在该行上,然后按 ctrl-K 和 ctrl-C)。
  2. 构建项目 (ctrl-shift-B)
  3. 像往常一样添加控制器脚手架。
  4. 取消注释 Web.config 中的初始化键(ctrl-K、ctrl-U)。

是的,这有点像在黑暗中随机刺伤的方法,但我会把它留在这里,以防它帮助其他人在谷歌上搜索同样的问题!

于 2013-01-03T10:50:45.967 回答