4

我正在尝试ASP.Net MVC 4 教程。当我添加以下代码并构建应用程序时,我期望 Movies.mdf 文件将在解决方案资源管理器的App_Data文件夹下创建。但是,该目录中没有创建任何内容。知道为什么吗?

<connectionStrings>
  <add name="DefaultConnection" 
   connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MvcMovie-2012213181139;Integrated Security=true" 
   providerName="System.Data.SqlClient"/>    
  <add name="MovieDBContext" 
   connectionString="Data Source= (LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" 
   providerName="System.Data.SqlClient" /> 
 </connectionStrings>

使用:.NET 框架 4 VS 2010

4

7 回答 7

2

问题已经解决了。问题是项目的位置。我正在处理来自共享驱动器的文件,该驱动器显然没有在App_Data文件夹中创建数据库。连接字符串代码绝对没问题,因为它在教程中显示,不需要更改。

于 2012-10-31T09:28:54.553 回答
2

在我的机器上拥有一个完整的 MS SQL 2012 实例,而不是 SqlExpress,我遇到了这个问题。我发现通过让应用程序继续运行(而不是在 VS 捕获异常时在 Visual Studio 中停止它),我在浏览器中收到了一条有用的消息:

文件“c:\users\chris\documents\visual studio 2012\Projects\MvcApplication1\MvcApplication1\App_Data\aspnet-MvcApplication1-20140225162244.mdf”的目录查找失败,出现操作系统错误 5(访问被拒绝。)。创建数据库失败。无法创建列出的某些文件名。检查相关错误。

这说明问题在于 sql 服务没有对​​我的应用程序目录的写入权限。

授予它权限有点棘手,因为需要的用户名没有出现在资源管理器 GUI 中(在 Windows 8 Pro 中)以确保安全。Sql Server 的默认实例的用户名是NT SERVICE\MSSQLSERVER(对于一个实例,它是NT SERVICE\MSSQL$InstanceName),我必须手动输入它,然后给它写权限。我只是在 App_data 目录上这样做的。

然后它起作用了。

于 2014-02-25T18:09:59.550 回答
1

在您实际将第一条记录添加到您的一个表之前,不会创建数据库。

于 2013-10-07T12:27:46.307 回答
1

当 Visual Studio 和 MSSQL 在不同权限下运行时会出现此错误。因此,您的应用程序没有创建.mdf数据库文件的写入权限。

解决方案

  1. 打开SQL Server Configuration Manager
  2. 选择SQL Server Services
  3. 查看Log On As标签

    该值将类似于NT AUTHORITY\NETWORKSERVICE(取决于)


获取用户名后,

  1. 然后转到目标文件夹。(如果默认,App_Data在您的项目目录中)
  2. 右键 -> 属性窗口 -> 安全选项卡
  3. 单击编辑->检查用户或组名

    您不会看到Network Service用户或组名称列表中没有

您所要做的就是添加用户名并为该用户或组授予写入权限。

于 2015-06-11T06:49:14.287 回答
0

可能是 AttachDBFilename 的情况......我的项目有这个,它工作正常。

... connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|Movies.mdf" providerName="System.Data.SqlClient"

还要验证您的模型是否正确。如果您的模型未启动此连接,则它不会创建数据库。

于 2012-10-29T15:01:33.647 回答
0

我已经通过修改连接字符串解决了这个问题,如下所示

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

我确实从 nuget 安装了 Microsoft SQl Server Compact 4.0。但我不确定是否真的需要安装它。

于 2013-04-01T22:07:11.800 回答
0

在本MVC教程中,只需添加“ Initial Catalog=Movies;” (不带引号)到connection string,它会运作良好。

<add name="MovieDBContext"    connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=Movies;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" providerName="System.Data.SqlClient"/>
于 2013-12-03T03:38:14.480 回答