我正在尝试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
答案 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
数据库文件的写入权限。
<强>解强>
SQL Server Configuration Manager
SQL Server Services
请参阅Log On As
标签
该值类似于NT AUTHORITY\NETWORKSERVICE
(取决于)
获得用户名后,
App_Data
)点击修改 - &gt;检查用户名或组名
您不会在用户名或群组名单上看到Network Service
您所要做的就是添加用户名并为该用户或组授予写入权限。
答案 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"/>