10

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

4

1 回答 1

16

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

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

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

于 2012-06-24T20:12:04.593 回答