OnModelCreating和非自动迁移如何相关?

Dab*_*rnl 8 ef-migrations entity-framework-4.3

当我添加一个与我的数据库有一些关系的新表然后运行时,Add-Migration我看到在该Up方法中生成的代码用于添加表及其关系.但是,我更喜欢在OnModelCreating方法中使用流畅的API定义关系.这两种方法如何相互作用?我可以从Up定义实例关系的方法中删除代码吗?

Lad*_*nka 14

他们每个人都有完全不同的目的:

  • OnModelCreating用于模型的内联fluent-API定义.这些定义与默认约定,数据注释和配置类一起构成了模型的完整定义.
  • 显式迁移定义了必须对数据库执行哪些操作才能将其迁移到当前模型所需的表单

现在,这两者如何相关?迁移有两个输入,用于生成迁移代码(UpDown方法).一个输入是存储在__MigrationHistory数据库中的表中的最后一个迁移记录.此记录包含表示数据库的序列化模型.此输入是可选的,因为第一次迁移必须在没有它的情 第二个输入是必需的 - 它是您当前的模型,通过执行当前程序集中的代码来检索=> Add-Migration将执行您OnModelCreating的获取当前模型并将其与从数据库中检索的模型进行比较.比较的结果是显式迁移的内容UpDown方法.

  • 谢谢!因此,如果我理解正确,`Up`方法中的代码将反映在`OnModelCreating`方法中设置的定义(假设您在编写流畅的API定义后添加了迁移).必须*不*从'Up`中删除这些反映的定义. (3认同)