Как я могу перенести NHibernate PersistentGenericSet через WCF - PullRequest
0 голосов
/ 31 марта 2010

Я пытаюсь отправить объекты, полученные NHibernate, через WCF, но всякий раз, когда у меня есть свойство ICollection, я получаю исключение.

Когда NHibernate получает данные из базы данных, это свойство инициализируется экземпляром PersistentGenericSet.

Есть ли способ отправить PersistentGenericSet через WCF?

-или-

Есть ли способ заставить NHibernate инициализировать эти свойства другим типом?

1 Ответ

1 голос
/ 31 марта 2010

PersistentGenericSet является частью NHibernate (используется для отслеживания изменений в коллекциях). Он основан на интерфейсе ISet и классах из Iesi.Collections, которые использовались для заполнения пробела в .Net Framework, поскольку нет типа Set. Я думаю, что WCF имеет проблемы с сериализацией этого типа.

Быстрое решение состоит в том, чтобы изменить сопоставления NHibernate для использования Bag вместо Set. Тогда вы можете использовать обычный IList<T> вместо Set<T> в ваших классах w.

Лучшим решением является создание удаленного фасада , который отправляет DTO на ваши конечные точки WCF. Это позволит вам сохранить интерфейс ваших внутренних типов отдельно от тех, которые представлены как удаленные сервисы. Джимми Богардс Automapper - отличный инструмент, который поможет с процессом картирования.

Редактировать

После перечитывания проблемы я осмотрел и наткнулся на эту статью , в которой описывается обходной путь отправки коллекций NHibernate через WCF. Дэвид Брайон написал хорошую продолжение статья .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...