У меня есть простое приложение с расписанием.Он управляет:
- Группа сотрудников
- Сотрудники
- Список WorkEntry для каждого сотрудника
Вариант использования следующий:
- Мой пользователь запускает приложение и подключается к базе данных.
- Он просматривает свой WorkEntry за день.
- Он добавляет 2 новых WorkEntries, но НЕ сохраняя данные прямо сейчас.
- Он печатает WorkEntries, диалоговое окно показывает ему ход операции, выполнение которой может занять некоторое время.
Когда я впервые запустил приложение, у меня был один ObjectContext, созданный в соединении (в потоке пользовательского интерфейса) и удаленный, когда пользователь закрыл приложение.
Это работало довольно хорошо, но я столкнулся с проблемой реализации функции печати, потому что я не смог использовать ObjectContext в фоновом рабочем потоке.
Немного погуглив, я нашел концепциюединицы работы.
- Создать ObjectContext
- Хотите, чтобы вы хотели сделать
- Закрыть его
Кроме того, я понимаю, что сущности принадлежатк одному ObjectContext.
Допустим, ObjectContext # 1 - Используется в потоке пользовательского интерфейса для получения WorkEntries за день - Содержит две новые WorkEntries пользователя.- Еще не удален, потому что пользователь не сохранил свои изменения
Пусть скажем ObjectContext # 2 - Используется в фоновом рабочем потоке - Восстановить WorkEntries на день - Распечатать WorkEntries
Как можноObjectContext # 2 знать о двух новых WorkEntries в ObjectContext # 1?
EDIT
Я знаю, что есть недостаток ... пользователь ДОЛЖЕН сохранитьчтобы получить две новые записи в печатном отчете.
Но, допустим, мое приложение представляет данные в виде таблицы, как Excel.Пользователь будет ожидать ( по уважительным причинам ) того же поведения, что и Excel.То есть в Excel мне не нужно сохранять для печати новых строк ... Я просто хочу напечатать то, что вижу на своем листе, независимо от состояния сохранности представленных данных.