EFCore迁移; HasData(...)在ContextModelSnapshot中的作用是什么?

时间:2019-07-02 17:35:33

标签: ef-migrations ef-core-2.2

我谨记,在运行迁移时,将更新数据库数据,拍摄快照,因此最终得到了同步的系统:

  • 数据库数据看起来像X
  • ContextModelSnapshot看起来像X

稍后,我可以更新数据库中的数据,也可以更新快照中的数据,然后根据执行的操作,我可以告诉EFCore迁移器之一:

  • 更新数据库(如果我编辑了快照),并生成数据库数据库的sql / fluent样式更新,以便将db表与“ what was”和db表恢复为与快照=>同步。快照为“应为”
  • 更新快照(如果我更新了数据库),并再次生成一些sql / fluent样式更新以同步两者,但是这次使用快照作为“ what was”的引用,并且使用db作为“ what should”的引用。是

无论哪种情况,都可以创建迁移,而我只是告诉EF哪个应该授权数据

快速创建我的迁移;实际上,我已经相对于另一个数据库提高了一个数据库,并且由于已在其他位置进行了另一次迁移,因此快照也未与之同步,但我并不愿意这样做。因此,我改为编写了一个SQL,该SQL将从“ what was”数据库中生成看似快照的代码(用concat字符串共同创建c#代码),然后将我手动创建的代码放入快照中,然后要求EF迁移(带有“ what what”)。是”在应用程序设置中配置的数据库)

它产生了一些我所期望的;一些更新查询。。但是大多数情况下,它会为已经存在的数据生成插入,所以现在我收到PK违规。因此,我猜想我对迁移器的内部工作方式完全错误。如果我所处的唯一参考框架是两个数据库(一个生产,一个是我的开发人员),如果ef核心与两个数据库不同步,我将如何创建迁移?

0 个答案:

没有答案