ASP.NET MVC: 'attachdbfilename'键的值无效。

11

我正在阅读曼宁的《ASP.NET MVC 4实战》一书,并试图让第一个示例工作。

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

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

Invalid value for key 'attachdbfilename'

我运行的每个与数据库交互(包括SELECT或其他CRUD操作)都会出现这种情况。有什么想法吗?

9个回答

11

虽然我有点晚回答这个问题,但是我遇到了同样的问题,并通过修改连接字符串来解决了它,如下所示:

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

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


3
我曾尝试解决这个错误,但没有成功。最终通过将.NET Framework 4升级到4.0.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"
  />

Data Source=.\SQLEXPRESS; --> 有时会变成 Data Source=.; 之后,您需要配置正确的权限来访问文件夹 App_Data。 如果您在 Windows 7 上进行测试,请右键单击文件夹。属性 安全选项卡 -> 添加用户网络服务并赋予完全权限。


1
通过将 数据源 = localhost \ SQLEXPRESS 更改并在 App_Data 文件夹属性的安全选项卡下添加具有完全控制权限的 NETWORK SERVICE 用户,它对我起作用了。谢谢! - user1477388

1

前往 Web.config 的相应部分并修改为以下内容,以使用 SQLServerCE4:

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

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

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

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

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

0

我在这里找到了一篇关于那个错误的博客文章。它有点旧,但使用了 SQL Server 的 Express 版本。MSDN 链接

那篇博客文章提到了期望 SQL 数据库服务器名称为本地地址而不是 /sqlexpress。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接