11

我目前正在阅读 Manning 的“ASP.NET MVC 4 in Action”一书,并试图让第一个示例工作。

在我的测试应用程序中,我构建了一个简单的模型并创建了一些视图。然后我使用 NuGet 导入了“SQL Server Compact”。

当我最终尝试运行应用程序时,出现以下错误:

Invalid value for key 'attachdbfilename'

这发生在与我正在运行的数据库(SELECT 或其他 CRUD 操作)的每次交互中。有任何想法吗?

4

9 回答 9

12

虽然,我回答这个问题有点晚了,但我遇到了同样的问题,我通过修改下面的连接字符串解决了这个问题

 <add name="MovieDBContext"
    connectionString="Data Source=.;Initial Catalog=Movies;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True"
    providerName="System.Data.SqlClient" />

希望这对其他人也有帮助。

于 2013-04-01T22:05:45.030 回答
3

我尝试为这个特定错误找到解决方案,但没有成功。

最后通过将 .Net Framework 4 更新到 4.0.2 来修复它。可以找到补丁和详细信息这里是链接

希望能帮助到你

于 2012-11-19T15:29:04.057 回答
2

我认为这里的问题是 web.config 中的字符串不正确根据您设置的 sql,如果您设置类似这样的内容,该字符串将起作用

<add name="MovieDBContext"
       connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Movies;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True"
       providerName="System.Data.SqlClient"
  />

数据源=.\SQLEXPRESS; --> 有时,它会是 Data Source=.; 之后,您需要配置权限才能访问 Folder App_Data 如果您在 Window 7 上进行测试,请右键单击文件夹。属性安全选项卡-> 添加具有完全权限的用户网络服务

于 2013-08-28T09:23:51.463 回答
1

转到 Web.config 部分并将该部分修改为以下内容以获取要使用的 SQLServerCE4:

<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0"/>
</parameters>
</defaultConnectionFactory>
</entityFramework>
于 2012-11-01T22:44:12.960 回答
1

我猜只有在 .NET Framework v4.0.30319 上使用 SQL Express 时才会出现问题,无论如何在 .NET Framework 更新 4.0.2 中添加了 SqlClient 中的 SQL Server Express 本地数据库运行时支持 - http://support.microsoft.com/kb/ 2544514

交替使用与此类似的连接字符串

<add name="EmployeeDbContext" connectionString="Data Source=.;Initial Catalog=Employees;AttachDBFileName=|DataDirectory|\Employees.mdf;Integrated Security=True"
         providerName="System.Data.SqlClient" />
于 2013-07-15T06:59:51.873 回答
1
<add name="myconstr" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|mydata.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> 

上面的连接字符串给出了一个错误,但只要在我的数据库名称之前添加“\”,错误就得到了解决。

试试这个:

<add name="myconstr" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\mydata.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> 
于 2017-01-09T05:18:13.463 回答
0

这是我发现的有关该错误的博客文章。它有点旧,但使用的是 sql server 的 express 版本。MSDN 链接

该博客文章谈到期望 sql 数据库的服务器名称是本地地址而不是 /sqlexpress

还有这篇博客文章谈到了连接字符串不正确。所以也许检查你到数据库的连接字符串。你的问题可能就在那里。

于 2012-08-27T01:45:20.743 回答
0

您正在使用 SQL Server Compact 4.0:

确保您已安装 SQL Server Compact 4.0。

为 SQL Server Compact安装VS 2010 SP1 工具

将连接字符串更改为:

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

右键单击控制器文件夹并 -> 添加 -> 控制器

类型:

YourController
MVC-Controller with read/write ...
MyModel
new datacontext -> APP.Models.DatabaseContext
于 2013-04-04T16:03:48.270 回答
0

面对同样的问题,我查看了我的连接字符串,发现“UNC 样式”路径\\MyServer\MyDBServer不允许的,必须使用MyServer\MyDBServer远程主机的语法.\MyDBServer本地托管的数据库服务器的语法。

于 2013-11-19T08:17:57.040 回答