0

Я пытаюсь перенести эту модель:Как использовать функции во время миграции?

public partial class Project 
{ 
    public virtual int Id { get; set; } 
} 

этой модели:

public partial class Project 
{ 
    public virtual int Id { get; set; } 
    public virtual string CryptoId { get; set; } 
} 

После запуска Add-Migration, это то, что я получил:

public override void Up() 
{ 
    AddColumn("dbo.projects", "cryptoId", c => c.String()); 
} 

который я расширил в :

public override void Up() 
{ 
    AddColumn("dbo.projects", "cryptoId", c => c.String()); 

    // Populate cryptoId 
    using (var db = new DbContext()) 
    { 
     foreach (Project p in db.Projects) 
     { 
      Sql(string.Format 
      (
       "UPDATE [dbo].[projects] SET [cryptoId] = '{0}' WHERE [id] = {1}", 
       new CryptoId(p.Id), p.Id 
      )); 
     } 
    } 
} 

Однако это не работает. Когда я бегу Update-Database я получаю следующее сообщение об ошибке:

модель поддержав контекст «» DbContext изменилось с тех пор была создана база данных.

ошибка, очевидно, происходит потому, что я пытаюсь получить доступ к базе данных из-просрочено с моим уточненным контексте, но мне нужно знать Project.Id для того, чтобы заполнить мой Project.CryptoId.

Как я могу это сделать?

+0

Вы сделали 'Обновление- Database ', это применит ваши миграции к базе данных. –

+0

@BenRobinson, да. Сообщение об ошибке - это то, что я получаю, когда запускаю 'Update-Database'. Я отредактировал свой вопрос, чтобы добавить эту небольшую деталь. – Nolonar

+1

Вы пытались сделать свое обновление в методе 'Seed', это выполняется после того, как оно применило ваши миграции. –

ответ

1

Вы всегда можете сделать это как два отдельных миграций - один для обработки схемы, и один (где схема теперь соответствует коду) для обработки изменений данных ...

Смежные вопросы