У меня есть 4 таблицы:EF Code First каскадное удаление не работает
табличные Пользователь
public enum SEX { Male, Female }
public abstract class User
{
public int UserID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
public SEX Sex { get; set; }
}
Доктор таблицы inherites от пользователя
[Table("Doctor")]
public class Doctor : User
{
public string Department { get; set; }
public string Occupation { get; set; }
public string CabinetNumber { get; set; }
public virtual List<Treat> Treats { get; set; }
}
пациенте таблица inherites от пользователя
[Table("Patient")]
public class Patient : User
{
public int InsuranceNumber { get; set; }
public int CardNumber { get; set; }
public virtual List<Treat> Treats { get; set; }
}
public class Treat
{
public int TreatId { get; set; }
public int DoctorUserId { get; set; }
public int PatientUserId { get; set; }
public virtual Doctor Doctor { get; set; }
public virtual Patient Patient { get; set; }
}
public class HospitalContext: DbContext
{
public HospitalContext() : base("DBConnectionString") {
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<HospitalContext>());
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Treat>()
.HasRequired(x => x.Doctor)
.WithMany(x => x.Treats)
.HasForeignKey(x => x.DoctorUserId)
.WillCascadeOnDelete(true);
modelBuilder.Entity<Treat>()
.HasRequired(x => x.Patient)
.WithMany(x => x.Treats)
.HasForeignKey(x => x.PatientUserId)
.WillCascadeOnDelete(true);
base.OnModelCreating(modelBuilder);
}
public DbSet<User> Users { get; set; }
public DbSet<Treat> Treats { get; set; }
}
I hav Здесь вы найдете много ответов, но никто из них не работает. Я потратил несколько часов, пытаясь заставить его работать. Я знаю, что Entity Framework должен разрешать каскадное удаление, когда существует отношение «один ко многим», но оно не было
Благодарим за ответ. Это не работает. Я создал новый проект, чтобы протестировать другое время с нуля и создать пошаговую базу данных кода с миграцией, и все работает нормально, пока я не создал Inheritance User <- Doctor. Пользователь <- Пациент стратегии наследования TPT. В этой стратегии наследования это не работает. Но я попытался сделать это в стратегии TPC, и он отлично работает. –
@Vorotnyak_Nazar Обновленный ответ. – ranquild
Действительно? Вы знаете, почему это не работает? Так что базовый, и когда вы его используете, он не дает вам исключения! –