Как настроить cascade delete в Entity Framework?
После долгого чтения мануалов по fluent api, оказалось что дело совсем в другом.
Fluent api поддерживает cascade delete по умолчанию, проблема была в том, что нажимая "удалить", представление передавало контроллеру сущность в которой поля public virtual List<Zakupki> Zakupki { get; set; }
        public virtual List<Zakladki> Zakladki { get; set; }
        public virtual List<Vivod> Vivod { get; set; }
        public virtual List<Prodagi> Prodagi { get; set; }, то есть навигационные свойства были null.
Соответственно EF не мог удалить связанные записи потому что не знал какие, до тех пор пока я вручную не включил их в выборку[HttpPost]
        public ActionResult Delete(Partiya partiya)
        {
            BirdKeepingDBContext context = new BirdKeepingDBContext();
            if (ModelState.IsValid)
            {
                Partiya part = context.Partiya
                    .Include("Zakupki")
                    .Include("Zakladki")
                    .Include("Vivod")
                    .Include("Prodagi")
                    .Single(p => p.NomerPartii == partiya.NomerPartii);
                context.Partiya.Remove(part);
                context.SaveChanges();
            }

            return View(partiya);
        }
Остался небольшой вопрос, Include требует строку с именем связанного объекта, но напрямую прописывать, как у меня, как-то не хорошо. Как это лучше записать и вообще может есть конструкции получше чем эта?context.Partiya
                    .Include("Zakupki")
                    .Include("Zakladki")
                    .Include("Vivod")
                    .Include("Prodagi")
Используйте лябды вместо строкcontext.Partiya
                    .Include(x => x.Zakupki)
                    .Include(x => x.Zakladki)
                    .Include(x => x.Vivod)
                    .Include(x => x.Prodagi)