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

时间:2012-06-24 12:19:33

标签: entity-framework-4.3 ef-migrations

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

1 个答案:

答案 0 :(得分:14)

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

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

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