我目前正在阅读Manning的“ASP.NET MVC 4 in Action”一书,并试图让第一个例子起作用。
在我的测试应用程序中,我构建了一个简单的模型并创建了一些视图。然后我使用NuGet导入“SQL Server Compact”。
当我最终尝试运行该应用程序时,我收到以下错误:
Invalid value for key 'attachdbfilename'
这与我正在运行的数据库(SELECT或其他CRUD操作)的每次交互都会发生。有任何想法吗?
答案 0 :(得分:11)
虽然,我回答这个问题有点迟,但我遇到了同样的问题,我通过修改连接字符串解决了这个问题
<add name="MovieDBContext"
connectionString="Data Source=.;Initial Catalog=Movies;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True"
providerName="System.Data.SqlClient" />
希望这对其他人也有帮助。
答案 1 :(得分:3)
答案 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
语法服务器