小编典典

ASP.NET ConnectionString AttachDbFilename = | DataDirectory |

sql

这是关于带有Visual Studio 2012 Ultimate和SQL Server Express 2012的ConnectionStrings /
ASP.NET MVC。

在这里跟进本教程:http :
//www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-
aspnet-mvc-4我遇到了一个问题我的web.config中的这两个连接字符串:

<connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=(LocalDb)\v11.0;
                           Initial Catalog=aspnet-MvcMovie-users;
                           Integrated Security=SSPI;
                           AttachDBFilename=|DataDirectory|\aspnet-MvcMovie-users.mdf"
         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>

该网站运行正常,但我无法确定为什么在App_Data文件夹中创建第一个数据库,而在“ C:\ Program Files \ Microsoft SQLServer \ MSSQL11.SQLEXPRESS \ MSSQL \DATA”中创建第二个数据库?我认为两者都将在App_data中创建,因为两者都利用了以下属性:AttachDBFilename = |DataDirectory |!

注意:本教程提到应该在App_Data中,并且添加了一个屏幕截图,可以在其中显示它!

我一直在寻找答案,并陷入了SQL的复杂性(我认为用户实例可能是解决方案),但无法为此找到答案:

(这对于阅读有关用户实例http://msdn.microsoft.com/zh-
cn/library/bb264564(v=sql.90).aspx可能很有用)

任何想法都将不胜感激。提前致谢。

问候


阅读 184

收藏
2021-03-23

共1个答案

小编典典

经过研究/测试,结果如下:

VS将查看DataContext的类名称,并查看是否提供了与该类名称相同名称的连接字符串。例如:

public class MovieDataContext : DbContext

<connectionStrings><add name="MovieDataContext" ...

如果它设法找到匹配的连接字符串,它将根据您在相应数据字符串中指定的条件来创建数据库(要将数据库添加到App_Data中,请将数据库的路径设置为|
DataDirectory |,如上述两个连接字符串中所示)在问题中);
如果名称不匹配或您未提供任何连接字符串,VS将退回到默认设置,并在默认位置/设置 (通常为C:\ Program Files \ MicrosoftSQL Server \ MSSQL11)中创建数据库。 SQLEXPRESS \ MSSQL \ DATA)。

请注意,“集成安全性”设置和“初始目录”都没有任何作用(我能够在具有集成安全性= True和集成安全性=
SSPI且有/没有初始目录的App_Data中创建数据库)。

希望这可以帮助。感谢所有参加的人。

2021-03-23