Представьте себе такой сценарий: человек владеет набором автомобилей. В настоящее время у меня есть:
Пользователь (1) - (N) Автомобили
Теперь я хочу изменить мои таблицы, чтобы иметь собственные гаражи, а не машины, и гаражи имеют подмножество машин, т. Е. Добавить простое дополнительное косвенное указание:
Пользователь (1) - (N) Гаражи (1) - (N) Автомобили
Фактические данные могут быть отброшены, это нормально. Просто есть другие части этой базы данных, которые содержат данные, которые должны храниться. Эта часть полностью изолирована и может быть стерта. Пример составлен, потому что я не уверен, что могу сказать, но это действительно так просто.
Я понятия не имею о миграциях и с этим тяжело борюсь. Большое спасибо за любую помощь, я ценю это!
Редактировать: Что у меня есть:
public class OwnerEntity
{
[Key]
public Guid Id { get; set; }
[Required]
public string Name { get; set;}
public List<CarEntity> OwnedCars { get; set; }
// Rather would have:
// public List<GarageEntity> OwnedGarages { get; set; }
}
public class CarEntity
{
[Key]
public Guid Id { get; set; }
[Required]
public OwnerEntity Owner { get; set; }
public Guid OwnerId { get; set; }
// Would not be directly owned anymore but would have a garage as an owner
[Required]
public string ModelDescr { get; set; }
}
// In the db context
public DbSet<OwnerEntity> Owners { get; set; }
public DbSet<CarEntity> Cars { get; set; }
protected override void OnModelCreating(ModelBuilder model)
{
// This would simply duplicate. Once for Car <-> Garage and once for Garage <-> Owner entitities
model.Entity<CarEntity>()
.HasOne(x => x.Owner)
.WithMany(x => x.OwnedCars)
.HasForeignKey(x => x.OwnerId)
.OnDelete(DeleteBehavior.Cascade);
}
Основная проблема, с которой я сталкиваюсь, когда пытаюсь что-то здесь изменить, заключается в следующем: база данных по-прежнему сохраняет старые таблицы и схему. Не опуская его, появляются монетные фрагменты (как и ожидалось).
Есть также несколько сущностей, прикрепленных к Car (если использовать мой пример), которые я хочу сохранить (их схема). Я пытался закомментировать DBSets, чтобы EF сам отбрасывал таблицы, а затем вносил изменения и заставлял их выполнять фактическую миграцию, но на самом деле это не работает, слишком много работы и просто глупо ...
Надеюсь, это поможет больше!