Я знаком и использую EF Core 2.1 Миграция и заполнение. Однако мне неясно, как перенести семена в новую (измененную) версию.
Итак, в версии 1 приложения у меня есть:
modelBuilder.Entity<Category>().HasData(
new Category[]
{
new Category() { Id = 1, Name = "Category A" },
new Category() { Id = 2, Name = "Category B" },
new Category() { Id = 3, Name = "Category C" }
});
Пользователи добавляли элементы в эти категории, т.е.
public class Category {
public List<UserItem> Items {get; set;}
}
И к вашему сведению: формы Xamarin - поэтому база данных представляет собой Sqlite db на устройстве каждого пользователя.
Сейчас я выпускаю версию 2, и категории изменились, но я не хочу терять ни одну из существующих пользовательских данных.
Исходные данные категории теперь выглядят так:
modelBuilder.Entity<Category>().HasData(
new Category[]
{
new Category() { Id = 1, Name = "Category A" },
new Category() { Id = 2, Name = "Category B has a new name" },
// Category C has been merged with Category B
});
Категория A не изменилась, B получил новое имя, C был удален, а элементы C теперь должны находиться в категории B.
Как это достигается при переносе EF Core, чтобы сохранить существующие данные UserItems в новых категориях (учитывая, что, поскольку у каждого пользователя есть своя собственная база данных, я могу мигрировать только с использованием контекста времени выполнения EF.Migrate ())?