我最近开始使用 Entity Framework 迁移,并注意到当我运行Update-Database
命令时,数据库名称并没有为我所用。
我的连接字符串是:
<connectionStrings>
<add name="DataContext" connectionString="Server=.\SQLEXPRESS;Initial Catalog=TestDB;Trusted_Connection=Yes;" providerName="System.Data.SqlClient" />
</connectionStrings>
我第一次运行Update-Database时,我的数据库是用正确的名称TestDB创建的。但是,一旦我对我的一个实体进行了更改,除非我添加启动项目名称(我正在使用多项目解决方案),否则它将不再为我更新:
Update-Database -StartUpProjectName "TestDB.Data"
然后,这将创建另一个新数据库,迁移将始终继续使用该数据库。我不介意必须输入StartUpProjectName命令,但是有没有办法覆盖它生成的数据库的默认名称?它始终将数据库创建为
TestDB.Data.DataContext
有没有办法确保在传递 StartUpProject 名称时创建的数据库只是称为TestDB或者这是使用 StartUpProjectName 设置的限制?
作为说明,我认为我需要指定 StartUpProjectName 的原因是我有一个多层项目设置。迁移配置文件在我的“数据”项目中,实体/模型在我的“域”项目中,等等。我的 Global.asax.cs 文件中目前也没有任何初始化选项,就像我之前使用的那样代码优先 ef 4.2。因此,在我的项目中,我的数据项目中只有一个 DataContext,该项目中也有迁移配置。
编辑:
由于我最初设置了这个问题,我偶然发现了在多项目解决方案中命名数据库的“正确”方法。虽然下面的答案会起作用,但这确实意味着您正在将 web.config 复制到另一个不是理想解决方案的区域。相反,您可以通过执行以下操作将名称放入您的 DbContext 中(DataContext 只是我在项目中使用的名称):
public class DataContext : DbContext
{
public DataContext() : base("DatabaseNameHere")
{ }
public DbSet<Table1> Table1 { get; set; }
public DbSet<Table2> Table2 { get; set; }
public virtual void Commit()
{
base.SaveChanges();
}
}
谢谢,
富有的