У меня возникли проблемы с удалением объектов в EF Code First (новая БД) без нарушения ограничения внешнего ключа.Код Первое нарушение ограничений
У меня есть три класса, Job, Ticket и Notes. У задания есть 0,1 Билета и много заметок. Я хотел бы удалить работу (и ее реактивный билет/заметки) с помощью db.Job.Remove (job), но это приводит к нарушению FK между Job и Ticket. Как мне структурировать/аннотировать классы?
Заранее спасибо.
Следующий фрагмент кода определяет объекты/отношения:
public WorkflowEntities() : base("CodeFirstWorkflow") { }
public DbSet<Job> Job { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
base.OnModelCreating(modelBuilder);
// Should create a 1:0,1 between Job and Ticket with ticket being optional
modelBuilder.Entity<Ticket>()
.HasRequired(e => e.Job)
.WithOptional(e => e.Ticket);
}
}
public class Job {
public int JobId { get; set; }
public virtual Ticket Ticket { get; set; }
public virtual ICollection<Notes> Notes { get; set; }
}
public class Ticket {
public int TicketId { get; set; }
public int JobId { get; set; }
public virtual Job Job { get; set; }
}
public class Notes {
public int NotesId { get; set; }
public int JobId { get; set; }
public virtual Job Job { get; set; }
}
Спасибо. Я изменил ваше решение, потому что у моей работы могут быть только 1 (или 0) билеты. Раствор: modelBuilder.Entity() .HasOptional (р => p.Ticket) .WithRequired() .WillCascadeOnDelete (истина); –
bob