在Web.config </connectionstrings>上添加<connectionstrings>标记后,不在ASP.Net MVC 4应用程序上创建.mdf文件

时间:2012-10-29 14:25:02

标签: asp.net-mvc-4

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

<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 Framework 4 VS 2010

7 个答案:

答案 0 :(得分:2)

问题解决了。问题是项目的位置。我正在使用共享驱动器中的文件,这显然没有在 App_Data 文件夹中创建数据库。 Connectionstring代码绝对没问题,因为它在教程中显示,不需要进行任何更改。

答案 1 :(得分:2)

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

  

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

告诉我的问题是sql服务没有对​​我的应用程序目录的写权限。

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

然后它奏效了。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

当Visual Studio和MSSQL在不同的权限下运行时,会发生此错误。因此,您的应用程序无法获得创建.mdf数据库文件的写入权限。

<强>解

  1. 打开SQL Server Configuration Manager
  2. 选择SQL Server Services
  3. 请参阅Log On As标签

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

  4. 获得用户名后,

    1. 然后转到目标文件夹。 (如果是项目目录中的默认值App_Data
    2. 右键单击 - &gt;物业窗口 - &gt;安全标签
    3. 点击修改 - &gt;检查用户名或组名

      您不会在用户名或群组名单上看到Network Service

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

答案 4 :(得分:0)

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

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

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

答案 5 :(得分: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 ..但我不确定是否真的需要安装它。

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