Сериализация ORM Entity Xml - PullRequest
2 голосов
/ 05 января 2009

Я ищу ORM для использования с .net, мне нужно иметь возможность выполнять полную сериализацию графа в Xml на объектах, которые генерирует ORM. Мои собственные исследования привели меня к использованию WCF и Entity Framework для достижения этой цели. Это лучший вариант или есть более простой способ?

Ответы [ 3 ]

3 голосов
/ 05 января 2009

Большинство картографов O / R имеют отслеживание изменений внутри объектов контекста / сеанса, которые вы используете для выборки сущностей. Это создает проблемы, когда вы передаете объект сущности через провод в виде xml клиенту, меняете его там и отправляете обратно: сеанс / контекст, который извлек объект, к тому времени уже давно ушел.

LLBLGen Pro имеет отслеживание изменений в объектах и, следовательно, упрощает использование объектов по проводам. Он поставляется с XML-сериализацией / десериализацией графов для WCF, а также собственной двоичной сериализацией для удаленного взаимодействия (намного быстрее, чем стандартный двоичный форматер, а также намного более компактен).

Отказ от ответственности: я ведущий разработчик LLBLGen Pro.

2 голосов
/ 05 января 2009

Ну, большинство инструментов ORM могут испускать стандартные классы POCO .NET, и большинство стандартных классов POCO вполне пригодны для сериализации. Например, LINQ-to-SQL поддерживает DataContractSerializer (не XmlSerializer), устанавливая Serialization Mode в Unidirectional. Entity Framework делает то же самое (хотя я не думаю, что вам нужно менять какие-либо настройки для EF).

Для "проще" - ну в чем сложность? Настройка модели Entity Framework (или LINQ-to-SQL) обычно не очень сложна. Что-то конкретное проблематично?

Обратите внимание, что сериализаторами xml по умолчанию являются сериализаторы tree , а не graph сериализаторы. DataContractSerializer может поддерживать правильные графики, но вам нужно включить его (он не включен по умолчанию в режиме xml, поскольку он производит очень странный xml).

Вы упомянули WCF; это коммуникационная технология; Вы не упоминаете в вопросе связи, поэтому не совсем понятно, что вы имеете в виду. Обратите внимание, что «Службы данных ADO.NET» - это еще один вариант, если вам нужен доступ к данным на основе REST, но большинство ORM должны нормально работать с WCF. Конечно, есть альтернативы.

0 голосов
/ 05 января 2009

DataSet s должен быть самым простым способом сериализации данных в XML на стороне клиента (см. Использование XML в DataSet ). Но тогда это явно не библиотека ORM ...

Насколько мне известно, библиотеки ORM (например, NHibernate ) обычно полагаются на использование настраиваемой XmlSerializer (или настраиваемой сериализации WCF ), которая может быть слишком много работы для вас (или нет ...).

А затем полная сериализация графов в XML устанавливается в качестве будущей цели для Salamanca , фабрики программного обеспечения с открытым исходным кодом, включающей библиотеку ORM. Мы все еще на ранней стадии разработки, но любая рука приветствуется ...

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