为什么需要将连接字符串命名为“ DefaultConnection”以创建数据库MDF文件?

时间:2019-02-18 10:24:19

标签: asp.net asp.net-mvc asp.net-identity

我想知道这是怎么回事:如果我的连接字符串名称不是DefaultConnection,那么将不会在.mdf文件夹中创建App_data文件,并且数据库将创建的名称为efaultConnection的名称,就像我转到SQL Server时所显示的一样。

如果我将连接字符串重命名为DefaultConnection,那么将在.mdf文件夹中创建App_data文件,并且在使用SQL Server Management Studio的SQL Server中看不到数据库。

顺便说一句,一旦我尝试使用Identity Framework创建新用户,就会创建数据库。

<connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\JobsWebsiteDB.mdf;Integrated Security=True;User Instance=True"
         providerName="System.Data.SqlClient"/>
</connectionStrings>

1 个答案:

答案 0 :(得分:0)

您没有,至少我没有。创建数据库上下文时,需要传递连接字符串的名称。例如,我的连接字符串名为“ LonelyCacheIdentity”:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, long, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
{
    public ApplicationDbContext() : base("LonelyCacheIdentity")
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Properties<DateTime>().Configure(property => property.HasColumnType("datetime2"));
    }
}

然后,在我的web.config中,定义了以下连接字符串:

<connectionStrings>
    <add name="LonelyCacheConnection" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=lonelycacheproject;Integrated Security=True" providerName="System.Data.SqlClient" />
    <add name="LonelyCacheIdentity" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=lonelycacheproject;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>

对于生产,我将连接字符串转换为可在生产服务器上使用。