Мы пишем приложение WPF, используя Entity Framework (Silverlight с RIA-сервисами, если быть точным). Мы используем общий ObjectContext через приложение, чтобы мы могли извлечь выгоду из совместного использования данных между модулями.
Проблема в том, что если пользователь во время своей работы открывает, скажем, исторические продажи, он загружается в ObjectContext и остается там до конца приложения. Таким образом, следует использовать другой шаблон.
Я знаю, что ObjectContexts следует использовать как одну единицу работы. Но тогда как вы сообщите другим частям приложения, что что-то изменилось, и им следует перезагрузить свои данные?
Редактировать: ОК, EventAggregator, но тогда это заставит все другие части перезагрузить свои (вероятно, большая часть дублирует) данные. Также, вероятно, понадобится много событий для всех типов групп участников.
Как вы решаете эти проблемы? Мое текущее решение является своего рода компромиссом - используйте общий ObjectContext для основных данных, используемых целым приложением, чтобы они могли совместно использоваться и обновляться автоматически. А для большого объема данных используйте новый отдельный ObjectContext. Есть идеи получше?
Есть ли способ, как "освободить" сущности из их DataContext, чтобы сборщик мусора мог выполнить свою работу и освободить память?