2012-08-27 77 views
8

我正在阅读Manning的“ASP.NET MVC 4 in Action”一书,并试图获得第一个例子的工作。asp.net mvc键'attachdbfilename'的值无效

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

当我终于尝试运行我得到以下错误的应用程序:出现这种情况与数据库的每一次互动

Invalid value for key 'attachdbfilename' 

(SELECT或其他CRUD操作),我运行。有任何想法吗?

回答

11

虽然,我有点晚来回应这个问题,但我面临着同样的问题,我通过修改连接字符串像解决它下面

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

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

0

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

这对期待SQL数据库的服务器名称的博客帖子会谈是本地地址,而不是/ SQLEXPRESS

还有这个blog post谈到有关具有不正确的连接字符串。所以也许检查你的连接字符串到数据库。你的问题可能在那里。

1

转到Web.config文件的部分和修改部分下面让SQLServerCE4使用:

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

我试图寻找了没有成功此特定错误的解决方案。

最后修复.Net Framework 4到4.0.2。补丁和细节可以发现Here is the link

希望它可以帮助

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> 

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

类型:

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

我想使用SQL时,仅出现问题Express .NET Framework v4.0.30319反正 在.NET Framework更新4.0中添加了SqlClient中的SQL Server Express本地数据库运行时支持。2读 - 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" /> 
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" 
    /> 

Data Source =。\ SQLEXPRESS; - >有时候,它会是数据源=。 之后,你需要配置权限来访问FOlder App_Data 如果你在Window 7上测试,右键单击文件夹。财产 安全选项卡 - >添加用户网络服务充分的权利

+1

它为我改变为'数据源=本地主机\ SQLEXPRESS;',并与App_Data文件夹的属性的安全选项卡下的完全控制添加'网络SERVICE'用户。谢谢! – user1477388

0

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

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" />