@trauus

Как в EntityFramework реализовать связь и каскадное удаление?

Использую EntityFramework 6.2 CodeFirst. Сущности A и B содержат в себе коллекции объектов Record. При этом Record может содержаться только в одной коллекции, а при удалении A или B все объекты Record, содержащиеся в их коллекциях тоже должны быть удалены.

В будущем, помимо сущностей A, B добавятся еще другие, в которых также будут коллекции объектов Record.

Если создать связь many-to-many, то не работает каскадное удаление. А .HasMany(a => a.Records).WithRequired() вызывает исключение.

Как правильно реализовать связь, чтобы работало каскадное удаление?

class Record
{
	public int Id {get; set;}
	public int Code {get; set;}
	public DateTime Date {get; set;}	
}

class A
{
	public int Id {get; set;}
	public ICollection<Record> Records {get; set;}
	public string Comment {get; set;}
}

class B
{
	public int Id {get; set;}
	public ICollection<Record> Records {get; set;}
	public DateTime CreationDate {get; set;}
}


protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
	modelBuilder.Entity<A>()
		.HasMany(r => r.Records)
		.WithMany();

	modelBuilder.Entity<B>()
		.HasMany(i => i.Records)
		.WithMany();
}
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы