Вы можете использовать EDMX и сопоставление кода вместе, только если у вас есть отдельный тип контекста для каждого подхода (вы не можете смешивать подходы в одном типе контекста). Это, вероятно, самый большой недостаток, потому что это приводит к более сложному коду и обслуживанию.
Например, если вам нужно иметь какую-либо сущность в обоих типах контекстов, чтобы использовать ее как с новым, так и со старым кодом, вы должны поддерживать его отображение дважды. Вы также должны быть очень осторожны, чтобы не дублировать сам класс сущностей = ваш код должен сначала использовать класс, сгенерированный пользовательским инструментом для EDMX, но это будет невозможно, если они не используют POCO в текущем решении.
Еще одной проблемой будет целостность базы данных. Если вам нужно сохранить изменения обоих типов контекста в одной транзакции, вам придется использовать TransactionScope
и распределенную транзакцию = MSDTC (каждый экземпляр контекста будет обрабатывать свое собственное соединение с базой данных).
Если вы уверены, что вся система будет перенесена, вы, вероятно, можете подумать об использовании кода в первую очередь вместо EDMX (но имейте в виду, что сопоставление кода в первую очередь и DbContext обычно предлагают более ограниченный набор функций). Если вы не уверены, что сможете выполнить полную миграцию, даже не думайте сначала об использовании кода, потому что если оставить систему в состоянии, когда половина использует код сначала, а половина EDMX, то все будет только хуже и намного ужаснее.
Быть уверенным - это немного теоретически, потому что при разработке ПО вы можете быть уверены только в том, что требования / ситуация изменятся. Это означает, что миграция должна быть очень тщательно продумана.