繁体   English   中英

实体框架数据迁移

[英]Entity Framework Data Migration

我们更改了应用程序中的一些逻辑,现在我们在迁移中添加了一些字段,但现有条目也应该获得一些值。 因此我们需要加载条目,计算一些值并需要将这个值添加到新字段中。 那么如何访问使用Sql-Method请求的数据呢? AddColumn-Method 的 defaultValue-Flag 将不起作用,因为每个条目的计算值都不同。

这是某种工作流程:

protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.AddColumn<uint>(
            name: "Field",
            table: "Table",
            type: "INTEGER",
            nullable: false,
            defaultValue: 0u);


        var builder = migrationBuilder.Sql("SELECT * FROM Table");

        var data = builder.AccessData; // here I´m unsure how to access the data

        data.Field = Calculator(data);

        migrationBuilder.UpdateData(data); // this one is also not cleare
    }

MigrationBuilder是一种以流畅、C# 友好的方式表达将在迁移过程中执行的 SQL 代码的方法。 即使您编写的代码和迁移工具生成的“中间文件”看起来像 C#,最终迁移也变成了既不知道也无法与您的应用程序通信的纯 SQL。

因此,如果您需要处理现有数据,您的所有逻辑都必须发生在数据库端,并且必须表示为对MigrationBuilder的操作。 当然,在迁移的UpDown方法中,您可以利用 C# 的所有功能来构建要提供给migrationBuilder.Sql(...)的原始 SQL 语句。 此外,考虑到整个迁移是在一个事务中执行的,并且“易失性”存储过程可能对提取复杂的迁移逻辑很有用。

暂无
暂无

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

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