Я планирую применить Entity Framework в новом проекте, потому что мне понравился его OR / M-API, а также возможности отображения концептуальной модели хранилища (плюс, конечно же, Linq и Entity SQL).
Но как добиться слабой связи между уровнем пользовательского интерфейса и бизнес-уровнем, если объекты EF используются в качестве держателей данных в обоих. Если я оставлю сущности прикрепленными к их ObjectContext, пока они находятся в пользовательском интерфейсе, пользовательский интерфейс может обойти бизнес-уровень и подключиться напрямую к базе данных. Если я отсоединю сущности от их ObjectContext перед передачей их в пользовательский интерфейс, отслеживание изменений не произойдет, поэтому мне придется «воспроизвести» все изменения на бизнес-уровне, чтобы они были сохранены в базе данных (трудно достичь, особенно с родительско-детские отношения). Хотя я не хочу, чтобы бизнес-уровень снизился до «движка объектов-дерева-персистентности», существуют сценарии, в которых полезно иметь эту возможность.
Это, безусловно, относится и к другим OR-картографам, но некоторые альтернативные продукты, похоже, имеют несколько лучшие механизмы отсоединения / присоединения.