gpt4 book ai didi

entity-framework - 使用 Entity Framework Migrations 4.3 时如何显式命名数据库

转载 作者:行者123 更新时间:2023-12-03 05:43:38 24 4
gpt4 key购买 nike

我最近开始使用 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();
}
}

谢谢

丰富

最佳答案

您可以通过将其作为参数提供来避免在 app.config 中对其进行管理:

Update-Database -Verbose 
-ConnectionString "CONNECTIONSTRING"
-ConnectionProviderName "System.Data.SqlClient"
-StartupProjectName WEBSITE_PROJECT -ProjectName MIGRATION_PROJECT

简单易用,如果您喜欢无休止地打字。

关于entity-framework - 使用 Entity Framework Migrations 4.3 时如何显式命名数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9327409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com