当我添加一个与数据库有某些关系的新表,然后运行Add-Migration
时,我看到Up
方法中生成了代码以添加该表及其关系。
但是,我更喜欢使用OnModelCreating
方法中的fluent API定义关系。这两种方法如何相互作用?我可以从Up
方法中删除定义关系的代码吗?
最佳答案
他们每个人都有完全不同的目的:
OnModelCreating
用于模型的嵌入式fluent-API定义。这些定义以及默认约定,数据注释和配置类构成了模型的完整定义。 现在,这两个之间的关系如何?迁移具有两个用于生成迁移代码的输入(
Up
和Down
方法)。一个输入是存储在数据库的__MigrationHistory
表中的最后一个迁移记录。该记录包含代表数据库的序列化模型。此输入是可选的,因为第一次迁移必须在没有它的情况下进行。第二个输入是强制性的-通过执行当前程序集中的代码来检索当前模型=> Add-Migration
将执行OnModelCreating
以获取当前模型,并将其与从数据库中检索到的模型进行比较。比较的结果是显式迁移中Up
和Down
方法的内容。
关于entity-framework-4.3 - OnModelCreating和非自动迁移有何关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11177380/