Первая база данных кода EF: сбой входа для одного и того же пользователя для одной из двух баз данных, эквивалентная строка подключения - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь создать две базы данных с SQL Server 2014, Entity Framework.Один создается «автоматически» с удостоверением asp.net, а другой - с использованием метода seed в 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 голосов
/ 07 февраля 2019

Если у вас не установлен инициализатор для вашего контекста.Это означает, что он не будет пытаться создать базу данных.Если вы хотите убедиться, что БД создана, вы можете использовать инициализатор CreateDatabaseIfNotExists, например:

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

    //snip
}
...