【问题标题】:Existing Database and migrations现有数据库和迁移
【发布时间】:2017-11-22 04:18:33
【问题描述】:

我已经有一个从零开始创建的数据库(在 __MigrationHistory 表中具有迁移历史记录)和项目。我使用了“数据库中的代码优先”选项并生成了所有类。现在我想再创建一个表,我创建了一个类:

[Table("Companies")]
public partial class Company
{
    [Key]
    public int ID { get; set; }
    public string Name { get; set; }
}

然后我为我的上下文启用了迁移(项目中有 2 个上下文,使用了 2 个 DB):

Enable-Migrations -ProjectName Infrastructure -ContextTypeName Infrastructure.Asset.AssetContext

它创建了“迁移”文件夹和 Configuration.cs 文件。

接下来,我尝试添加迁移:

Add-Migration -Name Company -ProjectName Infrastructure

它创建迁移,但对已经存在的表使用 Create (Drop)。

为什么?我只想创造差异。

【问题讨论】:

    标签: c# entity-framework ef-code-first entity-framework-migrations


    【解决方案1】:

    您是否有权访问原始上下文和迁移?您应该继续在现有项目之上构建迁移。如果不这样做,那么您应该创建一个新的 Code First 上下文,对现有数据库进行反向工程,然后重新启用迁移以从头开始。

    【讨论】:

    • "对现有数据库进行反向工程,然后重新启用迁移以从头开始。" - 怎么做?清除 __MigrationHistory 表?
    【解决方案2】:

    创建迁移后在包管理器控制台中运行命令

    更新数据库

    这应该反映迁移中所做的任何更改

    【讨论】:

    • 此命令无法执行,因为此类对象已存在
    • 你有视觉模型吗?像.edmx?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 2019-05-03
    • 2012-04-27
    相关资源
    最近更新 更多