2015-01-05 75 views
0

我在Codefirst一个新手,我不明白它是如何工作正常。 我通过“附加迁移”命令创建3迁移,迁移1..3并出具了“更新数据库”相对更新。EF codefirst迁移它是如何工作在生产环境中

我在我的迁移目录和自定义数据库初始化(我工作的MySQL),我为了将初始数据播种创造了Configuration.cs文件。

我不知道在生产环境中的场景,我没有任何数据库尚未后面会发生什么。

谁负责创建和更新数据库?迁移是否一个接一个地执行?

您能否给我建议这个过程中生产的工作方式和共享有用的链接?

问候, 罗伯托

+0

你是什么意思,你没有生产环境中的数据库? – ilans

+0

嗨,我从头开始在生产中,我刚刚部署了该软件包。当我第一次调用迁移过程时调用上下文类时,我会在幕后考虑,但以何种方式? –

+0

你应该从你的初始化函数调用'CreateIfNotExists'函数,或者使用一个初始化函数,它完全符合我不推荐的 - 这使我很麻烦。 – ilans

回答

0

假设你正在使用Automatic Migrations - 所有迁移被称为一个接一个,在创建它们的顺序排列。它们的Up函数被调用。之后,您的Configuration课程上的Seed功能应该启动。

每个移民有一个排序的文件名里的时间戳的,就像这样:

enter image description here

如果您正在创建大量数据库出单上下文类的像我这样做了,你担心无法控制迁移,您可以使用手动迁移。它被称为DbMigrator

见我/人回答here如何使用它。

+0

嗨,感谢您的解释,如果我将自动迁移设置为false,那么非dev /本地环境中的行为是什么? –

+0

我并不总是使用'自动迁移'。在一些数据库中,我使用它,有些则没有。含义 - 如果您不使用它,则不会发生任何事情...如果您像我一样从单个上下文类中创建大量数据库,并且担心无法控制迁移,则可以使用手动迁移。它被称为'DbMigrator'。 – ilans

+0

请参阅我在答案中提供的链接 - 它显示了手动迁移的选项 - 以实现完全控制,并且不担心发生“自动迁移”时可能发生的不需要的迁移和内容。 – ilans

相关问题