asp.net mvc键'attachdbfilename'的值无效

时间:2012-08-27 00:36:22

标签: asp.net sql-server asp.net-mvc connection-string

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

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

当我最终尝试运行该应用程序时,我收到以下错误:

Invalid value for key 'attachdbfilename'

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

9 个答案:

答案 0 :(得分:11)

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

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

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

答案 1 :(得分:3)

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

最后通过将.Net Framework 4更新为4.0.2来修复它。可以找到补丁和详细信息Here is the link

希望有所帮助

答案 2 :(得分: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; - &GT;有时,它将是Data Source =。; 之后,您需要配置权限才能访问FOlder App_Data 如果您在Window 7上测试,请右键单击文件夹。属性 安全标签 - &gt;完全添加用户网络服务

答案 3 :(得分:1)

转到Web.config部分并将该部分修改为以下部分以使用SQLServerCE4:

<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0"/>
</parameters>
</defaultConnectionFactory>
</entityFramework>

答案 4 :(得分:1)

我想只有在.NET Framework v4.0.30319上使用SQL Express时才会出现问题 在.NET Framework更新4.0.2中添加了SQL Server Express本地数据库运行时支持SqlClient - 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" />

答案 5 :(得分: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" /> 

答案 6 :(得分:0)

这是我发现的关于该错误的博文。它有点旧,但使用的是sql server的快速版本。 MSDN Link

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

还有这个blog post讨论了一个不正确的连接字符串。所以也许检查你的连接字符串到数据库。你的问题可能存在。

答案 7 :(得分:0)

您正在使用SQL Server Compact 4.0:

确保已安装SQL Server Compact 4.0。

安装VS 2010 SP1 Tools for SQL Server Compact

将您的连接字符串更改为:

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

右键单击controllers文件夹和 - &gt;添加 - &gt;控制器

类型:

YourController
MVC-Controller with read/write ...
MyModel
new datacontext -> APP.Models.DatabaseContext

答案 8 :(得分:0)

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