Entity Framework 如何知道要添加哪个迁移?

Posted

技术标签:

【中文标题】Entity Framework 如何知道要添加哪个迁移?【英文标题】:How does Entity Framework know which migration to add? 【发布时间】:2022-01-22 12:35:39 【问题描述】:

我正在尝试在实体框架的帮助下进行设置,而无需处理 SQL 的代码相关部分。

我创建了一个模型并通过包管理器控制台添加了一个迁移,一切正常,它更新并创建了表。

我想问的是实体如何知道我要添加哪个迁移。

我用过:

add-migration (and put here the name of the migration file)

但我不明白的是,它怎么知道我的桌子需要哪种型号?

或者换句话说,如果我在进行任何迁移之前有 2 个模型,会选择哪个模型?

如果有人可以帮助我,我将不胜感激。

提前致谢

【问题讨论】:

【参考方案1】:

您似乎正在使用entity framework migrations 并且对它的工作原理感到困惑。以下是解释:

Question: But the thing I don't understand how does it know which model I want for my table?

如果您查看您的项目文件夹,则有该目录 Migrations。里面写的都是migrations history logs 当我们对数据模型进行任何更改时,EF Core 会将当前模型与旧模型的快照进行比较以确定 差异,并生成迁移源文件;文件可以是 像任何其他源文件一样在项目的源代码管理中进行跟踪。 一旦生成了新的迁移,就可以通过多种方式将其应用于数据库。 EF Core 将所有应用的迁移记录在一个 特殊的历史表,让它知道哪些迁移已经 申请了,哪些没有

Question: If I would have 2 models before I did any migrations which model would get chosen?

如前所述,由于它会跟踪以前的迁移历史记录,因此在您的 old model 中,它会比较差异并覆盖最新的 未写入旧文件的更改。这就是它的工作原理。

希望以上解释能够相应地指导您并弥补您的困惑。你也可以看看official documents here

【讨论】:

以上是关于Entity Framework 如何知道要添加哪个迁移?的主要内容,如果未能解决你的问题,请参考以下文章

csharp 如何首先使用迁移向Entity Framework 4.3代码中的列添加描述?

向数据库添加新表后如何更新 Entity Framework Core

如何使用 Entity Framework Core 在不同的表中多次添加对象 [跟踪错误]

使用Entity Framework时要注意的一些性能问题

如何在 Entity Framework db-first 项目中添加非聚集索引?

entity framework 6 添加实体必须用设计器拖吗