繁体   English   中英

EF迁移数据库优先方法?

[英]EF Migrations for Database-first approach?

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

有没有一种方法可以帮助EF Migrations自动将更改应用于客户数据库?

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

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

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

为此,假设您有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,就像首先创建的早期DefaultConnection Db一样。

您可能需要继续前进的方法是根据您的服务器和其他选项编辑YourDbFileName ConStr。

更多信息在这里这里

启动Entity Framework 4.1,您可以使用现有数据库执行Code First Migrations

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

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

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

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

如果你评论这个:

throw new UnintentionalCodeFirstException();

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

对不起,如果我没有提供更多细节,如果你想要更多,我会很乐意编辑它并让它变得更好!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM