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

时间:2019-02-07 14:47:50

标签: c# entity-framework asp.net-mvc-5 sql-server-2014 connection-string

我正在尝试使用SQL Server 2014 Entity Framework创建两个数据库。一个是使用asp.net身份“自动”创建的,另一个是我在Configuration.cs中使用种子方法创建的。

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

  

基础提供程序在打开时失败。 [...]
  System.Data.SqlClient.SqlException:无法打开登录请求的数据库“ dbname”。登录失败。

以下是连接字符串:

<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();

1 个答案:

答案 0 :(得分:1)

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

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

    //snip
}