实体框架的连接字符串的来源

时间:2019-01-04 15:26:48

标签: c# entity-framework

我有两个项目。其中只有一个用于执行与数据库相关的任务。我们称之为 Project X 。现在, Project X 的config(app.config)文件具有如下连接字符串:

<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);
    }
}

现在,让我们考虑第二个项目 Project Y 。第二个项目的连接字符串如下(当然是在配置文件中):

 <connectionStrings>
  <add name="ConY" connectionString="...;Initial Catalog=TestDb1;..." providerName="System.Data.SqlClient" />
</connectionStrings>

项目X 项目Y 中的引用。 继续...

我打开 Package Manager控制台并针对 Project X 运行以下命令:

enable-migrations -ConfigurationTypeName ....
Add-migration -ConfigurationTypeName ....
Update-Database -ConfigurationTypeName ....

这些命令可以完成明显的工作,例如创建迁移,创建数据库和关联的表。

我的问题是:

  

这些命令从何处获取连接字符串?

Package Manager控制台中,我定位 Project X 。通过命令应用迁移时, Project X 如何从 Project Y 的配置文件中加载连接字符串?在 Project Y 的配置文件的连接字符串中,我将数据库名称设置为TestDB1,并且命令也创建了该名称的数据库。

这是正常行为吗?如果是这样,它是如何工作的?

(不确定是否与这一切有关,但仍添加: Project Y 是解决方案的启动项目)

0 个答案:

没有答案