Общий способ переключения между Sqlite или SqlServer в EF Core? - PullRequest
0 голосов
/ 07 декабря 2018

Я хочу иметь возможность на лету переключаться между использованием SQLite и SqlServer в качестве поставщика БД для Entity Framework в приложении ASP.NET Core.

Обычный шаблон для связывания DbContext сПоставщик базы данных использует код в методе ConfigureServices:

        services.AddDbContext<FeedbackDbContext>(options => options.UseSqlite(Configuration.GetConnectionString("Feedback")));

Каждый из поставщиков базы данных для EF Core добавляет свой собственный метод расширения как Use<Provider>.

Это удивительно для менячто я не могу найти способ указать поставщика базы данных для строки подключения в config

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Вы можете просто изменить:

с:

services.AddDbContext<FeedbackDbContext>(
    options => options.UseSqlite(Configuration.GetConnectionString("Feedback")));

на:

services.AddDbContext<FeedbackDbContext>(
    options => options.UseSqlServer(Configuration.GetConnectionString("Feedback")));
0 голосов
/ 08 декабря 2018

Если вы используете одно и то же соединение, вы можете изменить имя базы данных.Я предполагаю, что вам нужно будет закрыть, изменить, а затем снова открыть.Я сам не пробовал.

this.Database.GetDbConnection().ChangeDatabase("DB name");

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

this.Database.GetDbConnection().ConnectionString = "new connection string";

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

public partial class YourDbContext : DbContext
{
    void SetConnection(string s)
...