У меня есть объект, который содержит свойство типа TimeSpan. Мы решили изменить имущество от TimeSpan до Int (минуты). My Idea теперь необходимо изменить следующим образом:Преобразование типа столбца в No Magic Migration
Извлечение каждой записи из старого столбца (TimeSpan) и преобразование ее в минуту (Int) и добавление ее в новый созданный столбец.
Где/какой лучший подход к этому? Должен ли я сделать это в методе Seed ?! Я думаю, это невозможно, потому что после завершения миграции вызывается Seed
.
Второй подход в Up()
способ. Это хорошая идея? Скопировать/преобразовать данные столбца в другой столбец в методе Up.
public partial class V30 : DbMigration
{
public override void Up()
{
AddColumn("dbo.Plexes", "ISingleIsValidTimeInMinutes", c => c.Int(nullable: false));
// I NEED HERE TO TRANSFER THE DATA FROM ISingleIsValidTime TO ISingleIsValidTimeInMinutes ?!!!
TransformISingleIsValidTimeToInt();
DropColumn("dbo.Plexes", "ISingleIsValidTime");
}
....
}
private void TransformISingleIsValidTimeToInt()
{
// HERE CONVERTING LOGIC I NEED THE EXISITNG DATA FROM DBCONTEXT!!
}
public class NoMagicDatabaseConfiguration : DbMigrationsConfiguration<ApplicationDbContext>
{
public NoMagicDatabaseConfiguration()
{
this.AutomaticMigrationsEnabled = false;
this.AutomaticMigrationDataLossAllowed = false;
}
protected override void Seed(ApplicationDbContext context)
{
base.Seed(context);
}
}
, но проблема типа столбца; Timespan -> int тип изменяется; Мне нужно сделать некоторые логические преобразования! Возможно решить эту проблему с помощью EF или мне нужна хранимая процедура для изменения данных на сервере! ???? –
Если вы хотите решить эту проблему с помощью только EF, вы можете создать экземпляр своего контекста во время миграции между добавлением и удалением столбцов и выполнять там работу, но если у вас много строк, это может занять некоторое время. – ESG
Я буду держать это в качестве последней души для проблемы; Теперь я собираю информацию о MigrationOperation и надеюсь, что смогу найти что-то таким образом; Спасибо за помощь. –