Generating seed code from existing database in ASP.NET MVC

后端 未结 2 1724
予麋鹿
予麋鹿 2020-12-30 11:43

I wondered if anyone has encountered a similar challenge:

I have a database with some data that was ETL\'ed (imported and transformed) in there from an Excel file. I

2条回答
  •  自闭症患者
    2020-12-30 12:03

    Lets say we have a simple database table with 3750 records in it;

    | Id   | Age | FullName        |
    |------|-----|-----------------|
    | 1    | 50  | Michael Jackson |
    | 2    | 42  | Elvis Presley   |
    | 3    | 48  | Whitney Houston |
    | ...  | ... | ...             |
    | 3750 | 57  | Prince          |
    

    We want to create this table in our database with using auto-generated Configuration.cs file and its Seed() method.

    protected override void Seed(OurDbContainer context)
    {
        context.GreatestSingers.AddOrUpdate(
                p => p.Id,
                new GreatestSinger { Id = 1, Age = 50, FullName = "Michael Jackson" },
                new GreatestSinger { Id = 2, Age = 42, FullName = "Elvis Presley" },
                new GreatestSinger { Id = 3, Age = 48, FullName = "Whitney Houston" }
                );
    }
    

    This is what you should do. 3750 times!

    But you already have this data in your existing database table. So we can use this existing data to create Seed() codes.

    With the help of SQL String Concatenation;

    SELECT
    CONCAT('new GreatestSinger { Id = ', Id ,', Age = ', Age ,', FullName = "', FullName ,'" },') 
    FROM GreatestSinger
    

    will give us all the code needed to create 3750 rows of data.

    Just copy/paste it into Seed() method. And from Package Manager Console;

    Add-Migration SeedDBwithSingersData
    
    Update-Database
    

提交回复
热议问题