Как сохранить базу данных выбранную директорию EF

Что мне нужно сделать: допустим пользователь выбрал куда сохранить файл с помощью класса SaveFileDialog,как мне сгенерировать базу данных по этому пути.

Note: Не могу понять почему при генерации базы данных программа подвисает.

Моя сущность для генерации базы данных Article:

 public class Article
    {
        public int Id { set; get; }
        public string Title { get; set; }
        public string Text { get; set; }
        public string Image { get; set; 
        public Article() { }
        public Article(string title, string text, string image)
        {
            Title = title;
            Text = text;
            Image = image;
        }
    }

ArticleContext

 public class ArticleContext : DbContext
    {
        public ArticleContext() : base("DBConnect") { }
        public DbSet<Article> Articles { get; set; }
        public static void Save<T>(List<T> item) where T : class
        {
            using (var db = new ArticleContext())
            {  
                db.Set<T>().AddRange(item);
                db.SaveChanges();//Сохраняем все изменения, сделанные в базовой базе данных.
            }
        }

    }

DBConnect-страка полученыя к бд

<connectionStrings>
    <add name="DBConnect"
        connectionString="data source=(localdb)\MSSQLLocalDB;Initial Catalog=ParserHabr;Integrated Security=True;"
        providerName="System.Data.SqlClient"/>
  </connectionStrings>

Ответы (1 шт):

Автор решения: Alexander Petrov

Класс DbContext имеет конструктор, принимающий параметр nameOrConnectionString. То есть в него можно передавать непосредственно строку соединения.

Чтобы им воспользоваться, сделайте в своём классе ArticleContext конструктор с аналогичным параметром:

public class ArticleContext : DbContext
{
    public ArticleContext(string connectionString) : base(connectionString) { }
    // ...
}

Получив имя файла из SaveFileDialog:

string filename = saveFileDialog.FileName;

используем его для конструирования строки соединения. Чтобы не допустить ошибок экранирования и т. п., применим класс SqlConnectionStringBuilder.

var builder = new SqlConnectionStringBuilder();

builder.DataSource = @"(localdb)\MSSQLLocalDB";
builder.IntegratedSecurity = true;

builder.AttachDBFilename = filename;
builder.InitialCatalog = Path.GetFileNameWithoutExtension(filename);

string connectionString = builder.ToString();

Создаём контекст с этой строкой соединения:

var context = new ArticleContext(connectionString);
→ Ссылка