EF代码优先数据库:两个数据库之一的同一用户登录失败,等效连接字符串

EF code first database: login failed for same user for one of two databases, equivalent connection string

我正在尝试使用 SQL Server 2014,Entity Framework 创建两个数据库。一个是使用 asp.net 身份创建的 "automatically",另一个是我使用 Configuration.cs.

中的种子方法创建的

两者在连接字符串中具有相同的 SQL 登录名,但只创建了身份数据库。对于另一个,出现以下错误:

The underlying provider failed on Open. [...]
System.Data.SqlClient.SqlException: Cannot open database "dbname" requested by the login. The login failed.

以下是连接字符串:

<connectionStrings>
    <add name="AntContext" 
         connectionString="Database=dbname;User Id=user; Password=mypw;" 
         providerName="System.Data.SqlClient" />
    <add name="DefaultConnection" 
         connectionString="Database=dbnameidentity;User Id=user; Password=mypw;" 
         providerName="System.Data.SqlClient" />      
</connectionStrings>

签入 SQL Server Management Studio,数据库 dbnameidentity 已创建,甚至填充了来自 Configuration.cs 的播种数据,但对于另一个数据库,登录失败。

我不知道为什么会这样。如有必要,我会提供更多信息。谢谢。

这是我的种子方法的头部。

 protected override void Seed(IdentityDbContext context)
 {
        var antcontext = new DataContext.AntContext();

如果您没有为您的上下文设置初始化器。这意味着它不会尝试创建数据库。如果要确保创建数据库,则可以使用 CreateDatabaseIfNotExists 初始化程序,例如:

public class AntContext: DbContext 
{
    public AntContext(): base("AntContext") 
    {
        Database.SetInitializer<AntContext>(new CreateDatabaseIfNotExists<AntContext>());    
    }

    //snip
}