У меня есть два проекта. Только один из них предназначен для выполнения задач, связанных с базой данных. Давайте назовем это Проект X . Теперь файл config (app.config) Project X имеет следующую строку подключения:
<connectionStrings>
<add name="ConX" connectionString="...;Initial Catalog=TestDb2;..." providerName="System.Data.SqlClient" />
</connectionStrings>
В Project X у меня есть модель с именем Campaign
и класс, производный от DbContext
с именем CampaignDbContext
, который выглядит следующим образом:
public class CampaignDbContext : DbContext
{
public string ConnectionString;
public CampaignDbContext() : base("name=ConY")
///You will see why i set it to ConY later on...
{ }
public DbSet<Campaign> Campaigns { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer<CampaignDbContext>(null);
base.OnModelCreating(modelBuilder);
}
}
Теперь рассмотрим второй проект Проект Y . Второй проект имеет следующую строку подключения (в файле конфигурации, конечно):
<connectionStrings>
<add name="ConY" connectionString="...;Initial Catalog=TestDb1;..." providerName="System.Data.SqlClient" />
</connectionStrings>
Проект X является ссылкой в Проект Y .
Идем дальше ...
Я открываю Консоль диспетчера пакетов и запускаю следующие команды для Project X :
enable-migrations -ConfigurationTypeName ....
Add-migration -ConfigurationTypeName ....
Update-Database -ConfigurationTypeName ....
Эти команды выполняют очевидную работу, такую как создание миграций, создание базы данных и связанных таблиц.
Мой вопрос:
Откуда эти команды получают строку подключения?
В Консоль диспетчера пакетов , i target Project X . При применении миграции с помощью команд, почему Project X загружает строку подключения из файла конфигурации Project Y ? В строке подключения файла конфигурации Project Y я задаю имя базы данных как TestDB1
, и команды также создают базу данных с этим именем.
Это нормальное поведение? Если это так, как это работает?
(Не уверен, имеет ли это какое-либо отношение ко всему этому, но все же добавляет: Проект Y является стартовым проектом решения)