当我添加一个与我的数据库有一些关系然后运行Add-Migration
的新表时,我看到代码是在Up
方法中生成的,用于添加表及其关系。
但是,我更喜欢在OnModelCreating
方法中使用流畅的API定义关系。这两种方法如何相互作用?我可以从定义实例关系的Up
方法中删除代码吗?
答案 0 :(得分:14)
他们每个人的目的都完全不同:
OnModelCreating
用于模型的内联fluent-API定义。这些定义与默认约定,数据注释和配置类一起构成了模型的完整定义。现在,这两者如何相关?迁移有两个输入,用于生成迁移代码(Up
和Down
方法)。一个输入是存储在数据库中__MigrationHistory
表中的最后一个迁移记录。此记录包含表示数据库的序列化模型。此输入是可选的,因为第一次迁移必须在没有它的情第二个输入是必需的 - 它是您当前的模型,通过执行当前程序集中的代码来检索=> Add-Migration
将执行您的OnModelCreating
以获取当前模型,并将其与从数据库中检索的模型进行比较。比较结果是显式迁移中Up
和Down
方法的内容。