Я пытаюсь перенести эту модель:Как использовать функции во время миграции?
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
.
Как я могу это сделать?
Вы сделали 'Обновление- Database ', это применит ваши миграции к базе данных. –
@BenRobinson, да. Сообщение об ошибке - это то, что я получаю, когда запускаю 'Update-Database'. Я отредактировал свой вопрос, чтобы добавить эту небольшую деталь. – Nolonar
Вы пытались сделать свое обновление в методе 'Seed', это выполняется после того, как оно применило ваши миграции. –