我开始使用Asp.net MVC项目,首先使用Entity Framework代码并启用迁移。使用标准模板,我在与网站其余部分相同的项目中获得了我的模型。现在我想在另一个项目中重用我的模型,但无法找到如何将模型和所有迁移历史记录移动到单独项目中的分步方法。我最担心的是数据库与我的模型不同步,或者数据库中的数据丢失了。也许没什么好害怕的,但如果有人可以分享他们的经验,我会很高兴的!
答案 0 :(得分:1)
好的,当您启用迁移时,您可以将上下文,关联实体和迁移配置移动到新项目没问题。如果您保留所有命名空间,则不需要更改任何内容。这是因为数据库中迁移历史记录的密钥基于迁移配置文件的名称空间+类。例如,在我的Web应用程序中,我在
进行了迁移CodeMigrations.Migrations
所以__MigrationHistory表中的ContextKey最终为
CodeMigrations.Migrations.Configuration
如果我将此代码移动到新项目并保留名称空间,则不需要更改任何名称空间,但是如果我希望更新名称空间以反映新项目的新基本名称空间,我需要更新__MigrationHistory表中的行,将ContextKey更改为新名称。
例如,如果我将我的名为CodeMigrations的Web项目移动到名为CodeMigrations.Model的项目,我需要更新__MigrationHistory表,如下所示:
UPDATE [dbo].[__MigrationHistory]
SET
[ContextKey] = 'CodeMigrations.Model.Migrations.Configuration'
WHERE
[ContextKey] = 'CodeMigrations.Migrations.Configuration'
执行此操作后,迁移历史记录应与现在的新项目相关联