Я просто хочу правильно код организовать
Если непонятно о чем я говорю, то вот пример:
1.1. Смотришь на код, видишь лапшу
1.2. Каждую часть блока комечаешь комментарием, что оно делает
1.3. Понимаешь что эти комментарии это и есть отдельные подметоды, идешь на реф.гуру и читаешь про "извлечение метода", но без выделение новых сущностей
1.4. Первый маленький шаг
2.1 Если методы все еще большие, то делишь еще, до приемлемых размеров, пользуясь правилом ("Один метод, одна ответственность")
2.2 Смотришь на выделенные методы (во всех классах, а не в одном, это важно). Ищешь общие, схожие методы которые можно объединить в один и объединяешь их
2.3 ВАЖНО, выделение новой сущности должно происходить не абы как, а логически понятным языком, что бы сущность также выполняла одно функциональное действие
3.1 Выделив методы в сущности, разделив их и добавив документацию (что очень удобно), ты заметишь, что у тебя сущности делятся на разные уровни абстракции. К примеру: Так как ты используешь EF, то ты возможно выделишь работу с ним в отдельный класс, Предположим некий класс репозиторий, а будет слой который у тебя за логику приложения отвечает, это уровень бизнес логики
3.2 Тут и приходим к MVP и подобным паттернам, которые позволяют гибко разбивать приложение на уровни