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
}
我正在尝试使用 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
}