【问题标题】:How does Entity Framework know which migration to add?Entity Framework 如何知道要添加哪个迁移?
【发布时间】:2022-01-22 12:35:39
【问题描述】:
我正在尝试在实体框架的帮助下进行设置,而无需处理 SQL 的代码相关部分。
我创建了一个模型并通过包管理器控制台添加了一个迁移,一切正常,它更新并创建了表。
我想问的是实体如何知道我要添加哪个迁移。
我用过:
add-migration (and put here the name of the migration file)
但我不明白的是,它怎么知道我的桌子需要哪种型号?
或者换句话说,如果我在进行任何迁移之前有 2 个模型,会选择哪个模型?
如果有人可以帮助我,我将不胜感激。
提前致谢
【问题讨论】:
标签:
sql-server
entity-framework-core
asp.net-core-mvc
【解决方案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