C# 在EF迁移期间,如何基于其他列的数据填充新列?

C# 在EF迁移期间,如何基于其他列的数据填充新列?,c#,entity-framework-core,C#,Entity Framework Core,我有一个使用实体框架与我的C#项目连接的数据库。我有一个类型为int的字段“DealActive”,其中填充了1和0。我想将此字段更改为bool类型。EF中是否有方法仅将字段类型从int更改为bool,并将每个1更改为true和0更改为false?或者我必须添加一个类型为bool的新字段,并用true和false值填充它吗?是否有任何方法至少可以在迁移过程中做到这一点,或者我必须将其创建为空并用另一个函数填充数据 下面是用于添加新bool列的迁移代码 namespace MYPROJECT.Mi

我有一个使用实体框架与我的C#项目连接的数据库。我有一个类型为
int
的字段“DealActive”,其中填充了1和0。我想将此字段更改为
bool
类型。EF中是否有方法仅将字段类型从
int
更改为
bool
,并将每个
1
更改为
true
0
更改为
false
?或者我必须添加一个类型为
bool
的新字段,并用
true
false
值填充它吗?是否有任何方法至少可以在迁移过程中做到这一点,或者我必须将其创建为空并用另一个函数填充数据

下面是用于添加新
bool
列的迁移代码

namespace MYPROJECT.Migrations
{
    using System;
    using System.Data.Entity.Migrations;

    public partial class MigrationName: DbMigration
    {
        public override void Up()
        {
            AddColumn("dbo.Deals", "Active", c => c.Boolean(nullable: false));
        }

        public override void Down()
        {
            DropColumn("dbo.Deals", "Active");
        }
    }
}

生成的迁移不是禁止的。您可以在
Up()
Down()方法中插入自定义SQL代码。所以,如果EF不能满足您的需要,您可以编写自己的SQL并将其作为迁移的一部分。@TanveerBadar SQL中可以使用哪种方式?更改列的类型,或仅将数据从int列移动到新的bool列?您需要查找目标数据库的确切语法,但IIRC在基类
DbMigration
中提供了一种方法,可用于指定所需的任何自定义SQL。附言:看来EF core的工作方式与EF 6.x略有不同。生成的迁移并非禁止。您可以在
Up()
Down()方法中插入自定义SQL代码。所以,如果EF不能满足您的需要,您可以编写自己的SQL并将其作为迁移的一部分。@TanveerBadar SQL中可以使用哪种方式?更改列的类型,或仅将数据从int列移动到新的bool列?您需要查找目标数据库的确切语法,但IIRC在基类
DbMigration
中提供了一种方法,可用于指定所需的任何自定义SQL。附言:看来EF core做的事情与EF 6.x略有不同。