0

Я создаю динамические строки подключения в моем проекте. Они создаются «на лету» с информацией, предоставляемой специально для каждого пользователя. Когда приложение первого выстреливает, если база данных не существует (пользователь регистрируется первый раз), новая база данных создается без проблем с этим инициализаторе:Создать базу данных, если не существует без перезапуска приложения

public DataContext() : base() 
{ 
    // ProxyCreation and LazyLoading doesn't affect the situation so 
    // comments may be removed 
    //this.Configuration.LazyLoadingEnabled = false; 
    //this.Configuration.ProxyCreationEnabled = false; 
    string conStr = GetDb(); 
    this.Database.Connection.ConnectionString = conStr; 
} 

Проблема заключается в том, с помощью этого метода, у меня есть перезапустить пул приложений на сервере, и новый пользователь должен быть первым аксессуаром для приложения.

Мне нужно то же самое без требования перезапуска приложения. Это возможно?

(Это SPA с использованием AngularJS на представлениях MVC и WebAPI как поставщик данных - Может быть уместными как-то, так, что я должен упомянуть)

Я уже пробовал this, но это создает ошибку для EF и приложения не начинается вообще ...

+0

Какая ошибка возникает при вызове 'context.Database.Initialize (true);'? – Bigsby

ответ

0

Вы можете попробовать немного другой подход для прямого подключения (и создания) нужной базы данных.

public class DataContext : DbContext 
{ 
    public DataContext(DbConnection connection) : base(connection, true) { } 
} 

Здесь вы создаете DbContext уже с правильным соединением.

Обратите также внимание на то, что вам нужно указать для миграции, что нужно использовать правильное соединение (не соединение Web.Config, а соединение, которое привело к созданию базы данных). См. Вторую перегрузку https://msdn.microsoft.com/en-US/library/hh829099(v=vs.113).aspx#M:System.Data.Entity.MigrateDatabaseToLatestVersion.

Смежные вопросы