EF4 STE включить-путьисключить-путь?

Контекст: шаблон репозитория, WCF, WPF/SL

В моем репозитории сущностей с самостоятельным отслеживанием мне нужно явно загрузить некоторые связанные свойства, чтобы правильно обработать запрос. Это не включения, запрошенные клиентом, и я хотел бы избавиться от них, чтобы обеспечить разумный сетевой трафик. Мое решение до сих пор таково:

  1. Получить запрос
  2. В нагрузку входит необходимое для ответа на запрос
  3. Выполнить запрос
  4. Создать временный IEnumerable
  5. Повторите 4) и снова загрузите все элементы, на этот раз с включенным путем, запрошенным только из клиентского приложения.
  6. возвращать объекты через WCF

Я хотел бы сделать это:

  1. Получить запрос

  2. Загрузить все включает (инфраструктура плюс запрошенный клиентом)

  3. Выполнить запрос

  4. Разгрузочная инфраструктура включает

  5. возвращать объекты через WCF

    Каков правильный способ сделать это?

Спасибо, Армин


comment
Возможно, вы можете загрузить только необходимый граф объектов, а затем получить дополнительные объекты/коллекции. Еще одно решение - просто использовать расширение select для вырезания включений в графе объектов.   -  person Danil    schedule 23.02.2011


Ответы (1)


Как насчет ленивой загрузки и правильных объектов ответа DTO?

  1. WCF возвращает пользовательский заказ или GetOrderResponse (Contracts.Order)
  2. Загрузить заказ из EntityModel через репозиторий (только заказ)
  3. Используйте automapper для отображения EntityModel.Order => Contracts.Order

Результат: загружаются только соответствующие свойства внутри Contracts.Order:

Бывший. Contracts.Order Number OrderDetails (=> Только это свойство загружается через отложенную загрузку, потому что оно сопоставлено)

Если вы создаете SOA или веб-сервис, не позволяйте клиенту указывать графики нагрузки. Если клиенту необходимо указать графики нагрузки, рассмотрите возможность развертывания модели с использованием служб данных WCF, это отлично работает.

Возможно, вы могли бы создать две системы: одну SOA и одну (только чтение) Data Service.

person Krijn    schedule 27.05.2013