EF迁移数据库优先方法?

时间:2012-02-13 03:24:08

标签: c# entity-framework database-migration

我们正在使用Database First方法和EntityFramework。 我们有几个客户,当我们部署新产品版本时,我们现在使用SQL Compare等工具“手动”应用数据库架构更改。

EF迁移有助于自动将更改应用于客户数据库吗?

4 个答案:

答案 0 :(得分:19)

据我所知,EF Migrations是针对CodeFirst的产品,不支持Database First操作。

CodeFirst假设您永远不会手动对数据库进行任何更改。对数据库的所有更改都将通过代码首次迁移。

答案 1 :(得分:4)

我觉得有!您需要先完成代码。

为此,假设您拥有EF Db首次为您创建的以下DbContext:

public class MyDbContext : DbContext
{
    public MyDbContext()
        : base("Name=DefaultConnection")
    {

    }

    // DbSets ...
}

将其更改为以下内容以首先开始使用代码及其所有魔术工具(迁移等):

public class MyDbContext : DbContext
{
    public MyDbContext()
        : base("YourDbFileName")
    {

    }

    // DbSets ...
}

它导致EF在您的web.config文件中使用SQL Express在名称为YourDbFileName的情况下使用SQL Express创建一个新的连接字符串,就像早期的DefaultConnection Db首次创建一样。

您可能需要继续使用,是根据您的服务器和其他选项编辑YourDbFileName ConStr。

更多信息herehere

答案 2 :(得分:2)

启动Entity Framework 4.1,您可以执行Code First Migrations with an existing database

首先,您拥有数据库,创建模型,启用迁移。

最重要的是要记住,在对模式进行任何更改之前,应该运行Enable-Migrations,因为它应该在您的数据库和代码之间保持同步。

答案 3 :(得分:0)

只需查找您的DbContext子对象并查找此方法:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

如果您对此发表评论:

throw new UnintentionalCodeFirstException();

然后不会在迁移操作上抛出异常。正如您可能想象的那样,迁移查找此部分以了解具有哪些表或表的每个实体的配置。

很抱歉,如果我没有提供更多详细信息,如果您希望了解更多信息,我将很乐意对此进行编辑并使其更好!