在EF中,如果我添加一个代表数据库中现有表的新实体,我会收到一条错误消息,说明我需要运行迁移。
是否有将现有表添加到我的上下文而无需创建新迁移?
像这样的空迁移似乎毫无意义......
public override void Up()
{
}
public override void Down()
{
}
我猜每次添加entites都会将它与__MigrationHistory模型列中的序列化版本进行比较。
答案 0 :(得分:1)
您通常有两种选择:
Logs
表并写入数据。如果您稍后将此表添加到DbContext
,则将创建迁移。另一种可能的解决方案是有两个DbContexts
。在第一种情况下,您可以首先使用代码进行迁移,第二种情况可以是使用逆向工程方式使用的DbContext。
如果您不希望在架构中发生某些更改时创建迁移,则可以考虑MigrateDatabaseToLatestVersion
初始化。
答案 1 :(得分:0)
我们在此方案中所做的是重新使用最新的迁移。您可以使用-force
开关并指定目标迁移来重新迁移迁移。首先制作当前迁移的副本,然后在强制之后对其进行比较:您实际上告诉EF可以使用任何待处理的更改覆盖该文件。这是过程:
update-database -target:"SecondMostCurrentMigration"
add-migration MostCurrentMigrationName -force
根据您所做的副本审核该文件,以确保没有任何更改
将数据库更新为最新的迁移,即您刚刚修改的现有文件'。
update-database