首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于DbUp的实体框架代码

基于DbUp的实体框架代码
EN

Stack Overflow用户
提问于 2018-01-28 03:08:35
回答 2查看 4.7K关注 0票数 6

我正在考虑使用Entity Framework 6 Code First进行数据库交互,同时使用DbUp进行数据库模式更新。问题是,出于某些原因,我不想使用EF迁移。所以,我到达的工作流是:

  1. 更改模型(添加POCO,更改属性等)
  2. Add-Migration temp_file中运行Visual Studio Package Manager Console
  3. Update-Database -Script中运行Visual Studio Package Manager Console
  4. 获取生成的sql脚本,包括在表__MigrationHistory中插入新行
  5. 创建一个新的.sql文件并通过生成的脚本
  6. 删除temp_file
  7. 运行DbUp

它在本地和生产服务器上都能很好地工作,但是每次生成新迁移时,添加并删除temp_file都会让我感到不舒服(我希望有一种方法可以永久地阻止temp_file添加到解决方案中)。

所以问题:是否有更好的方法使用DbUp使用Entity Framework进行数据库迁移?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-30 10:28:06

在大多数情况下,您可以通过使用自动代码第一步跳过步骤(2)和(6)

自动迁移允许您使用Code ,而无需在您的项目中为您所做的每个更改提供一个代码文件。

默认情况下,自动迁移是禁用的。您可以通过在db迁移配置类构造函数(通常称为Configuration,位于Migrations子文件夹下)中添加如下内容来启用它们:

代码语言:javascript
复制
AutomaticMigrationsEnabled = true;

有些事情需要考虑:

  • 文档说明自动迁移有其局限性,所以请注意。
  • 您可以混合自动迁移和基于代码的迁移(换句话说,建议的和当前的方法)。
  • 当前方法的好处是可以预览EF如何解释模型更改,还可以添加/删除/更改迁移代码的部分。
  • 在except中,自动迁移已经被废弃(不存在),因此在except项目中,您必须使用与当前方法类似的东西,但您必须保留生成的迁移代码文件。
票数 4
EN

Stack Overflow用户

发布于 2018-02-05 21:53:34

也许这个答案太迟了,但也许它也是有用的。我完全理解您使用实体框架作为ORM和模式迁移的不同工具的方法。但是选择DbUp需要手动编写SQL或像上面描述的那样生成它们。我建议考虑使用FluentMigrator而不是DbUp。它遵循同样的理念,但允许使用fluent语法在C#中编写迁移步骤。此外,它还支持降级,即回滚。

下面是一个示例:

代码语言:javascript
复制
[Migration(1)]
public class CreateUserTable : Migration
{
    public override void Up()
    {
        Create.Table("Users");
    }

    public override void Down()
    {
        Delete.Table("Users");
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48482796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档