На самом деле, для больших моделей нет лучших практик, это зависит от личного опыта.
Что касается операций CRUD, вот несколько идей:
Вы можете написать транзакционный код, используя TransactionScope , этот подход позволит вам управлять на уровне таблицы.
В другом случае вы можете написать набор хранимых процедур, которые будут выполнять полные операции.В этом случае у вас будет элемент управления на уровне операций.
Что касается разделения EDMX, это имеет смысл, например, в случае, если ваша база данных имеет полностью независимую часть.