Источник строки соединения Entity Framework - PullRequest
0 голосов
/ 04 января 2019

У меня есть два проекта. Только один из них предназначен для выполнения задач, связанных с базой данных. Давайте назовем это Проект 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 является стартовым проектом решения)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...