【问题标题】:Entity Framework migrations and refactor model into separate project实体框架迁移和重构模型到单独的项目
【发布时间】:2015-03-20 18:24:08
【问题描述】:

我从一个 Asp.net MVC 项目开始,首先使用实体​​框架代码并启用迁移。使用标准模板,我在与网站其余部分相同的项目中获得了我的模型。现在我想在另一个项目中重用我的模型,但找不到如何将模型和所有迁移历史移动到单独项目中的分步配方。我最担心的是数据库与我的模型不同步,或者数据库中的数据丢失。也许没什么好害怕的,但如果有人能分享他们的经验,我会很高兴!

【问题讨论】:

  • 你试过什么?我以前做过,所以我会尝试挖掘我所做的事情

标签: asp.net asp.net-mvc entity-framework entity-framework-migrations


【解决方案1】:

好的,当您启用迁移时,您可以将上下文、关联实体和迁移配置移至新项目,这没有问题。如果您保留所有名称空间,则不需要更改任何内容。这是因为数据库中迁移历史的key是基于迁移配置文件的命名空间+类的。例如,在我的 Web 应用程序中,我在

进行了迁移
CodeMigrations.Migrations 

所以 __MigrationHistory 表中的 ContextKey 最终成为

CodeMigrations.Migrations.Configuration

如果我将此代码移动到新项目并保留命名空间,则无需更改任何内容,但是如果我希望更新命名空间以反映新项目的新基本命名空间,我需要更新__MigrationHistory 表中的行,将 ContextKey 更改为新名称。

例如,如果我将我的 Web 项目从名为 CodeMigrations 的项目移至名为 CodeMigrations.Model 的项目,我需要按如下方式更新 __MigrationHistory 表:

UPDATE [dbo].[__MigrationHistory] 
   SET 
    [ContextKey] = 'CodeMigrations.Model.Migrations.Configuration'
 WHERE 
    [ContextKey] = 'CodeMigrations.Migrations.Configuration'

执行此操作后,迁移历史现在应该与新项目相关联

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 2014-12-19
    • 2012-07-25
    • 1970-01-01
    • 2016-02-10
    • 2015-05-11
    相关资源
    最近更新 更多