0

I have a table which contains two columns (A and B).column A has default value of 1 or 0. I want to add new column C, its default value is 0 and C'values depends on A'value.
How can I do that using migration in ASP.NET Core.

fat
  • 6,435
  • 5
  • 44
  • 70
Nomad
  • 23
  • 5
  • 2
    Read the part about computed columns [here](https://learn.microsoft.com/en-us/ef/core/modeling/generated-properties?tabs=data-annotations). – user18387401 Jul 02 '22 at 11:14
  • "add new column C, its default value is 0 and C'values depends on A'value."Do you mean copy data from one column to another in the same table? If so, see this [answer](https://stackoverflow.com/questions/6308594/how-can-i-copy-data-from-one-column-to-another-in-the-same-table) – Qing Guo Jul 05 '22 at 01:59

2 Answers2

1

At first define your columns in a class for example named "Sample", than define a dbSet property in your application context , something like this

public DbSet<Sample> Contacts { get; set; }

If you want to set default value for your columns you can override OnModelCreating method in your application context and set a default value for your columns , like this:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Sample>()
        .Propery(p => p.A)
        .HasDefaultValue(0);
}

In above code "A" is your intended column name . Than write Add-Migration in command console to create new migration , than write Update-Database .

Hope it will be useful for you

Apollo13
  • 11
  • 6
0

try something like this :

protected override void Up(MigrationBuilder migrationBuilder)
{
    migrationBuilder.AddColumn<bool>(
        name: "C",
        table: "MyTableName",
        nullable: false);

    migrationBuilder.Sql("UPDATE MyTableName SET C=CASE  
                    WHEN A = 0 THEN 0 
                    WHEN B = 1 THEN 1 
                    ...
                    ELSE 0
                END  WHERE ...);
}

use whatever condition you need in migrationBuilder

Mahdi
  • 150
  • 1
  • 8