Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.58.182.39] |
|
Сообщ.
#1
,
|
|
|
Уважаемые знатоки этой ORM и колеекций из ее поставки.
Вот делаю обзорчик и наткнулся на одну неприятную вещь: XmlSerializer упорно не хочет даже создаваться, если класс использует Iesi.Collections.HashedSet, реализующую ISet, При этом говоря : You must implement a default accessor on Iesi.Collections.ISet because it inherits from ICollection. Бинарный форматтер сериализует-десериализует без проблем. Версия - 1.2 Может использовать другие типы коллекций для отношения один-ко-многим? Буду благодарен за советы. Спасибо. |
Сообщ.
#2
,
|
|
|
Это особенность XML сериализации которая требует и сетера и гетера для сериализации. Я бы не советовал заморачиваться с NHibernate на данный момент он практически не совместим с WCF именно по причине проблем с сериализацией собственных коллекций, WCF имеет траблы с передачей их через границы доменов(по сути сериализацией/десириализацией). Есть линк с описанием некоторых проблем http://lunaverse.wordpress.com/2007/05/09/remoting-using-wcf-and-nhibernate/ в текущем проекте решили отказаться в пользу использования LINQ TO SQL, с которым таких проблем нет.
|
Сообщ.
#3
,
|
|
|
М-да..
Спасибо, Серега. Намучился Попробовал с bag, с женериками, что-то можно сделать, но куда не наступи.. - какие-то грабли.. Сейчас буду читать.. |
Сообщ.
#4
,
|
|
|
Для интересующихся:
1. Использовать коллекции NHibernate.Collection.PersistenBag в связях один ко многим. 2. Для передачи между доменами использовать или BinaryFormatter, или в случае WCF - System.Runtime.Serialization.NetDataContractSerializer (как подключать - ходить по ссылке juice) Нюансы - NetDataContractSerializer не умеет разруливать циклические ссылки в графе при сериализации (разруливать - отсутсвием атрибутов [DataMember] на связях - многие к одному). Вроде выкрутился, вопрос закрыт Добавлено Цитата juice @ Я бы не советовал заморачиваться с NHibernate на данный момент он практически не совместим с WCF именно по причине проблем с сериализацией собственных коллекций juice, кстати совместим и легко В статье написано |
Сообщ.
#5
,
|
|
|
Цитата PIL @ juice, кстати совместим и легко В статье написано Ярик , я же линк специально тебе кинул , я ведь знаю как ты любишь все после сборки обрабатывать напильником )))) Сам с этим столкнулся, решение в виде написания собственного сереализующего кода который с некоторыми оговорками работает, нас не устроило. Поэтому предпочел родную MS технологию с которой проблем не наблюдается. Поводом юзать NHibernate, может быть только маниакальное желание не использовать хранимые процедуры и иметь возможность с теми или иными отговорками отвязаться от базы данных. |
Сообщ.
#6
,
|
|
|
Цитата juice @ - ну ты ж знаешь наши боевые условия и требования )))с теми или иными отговорками отвязаться от базы данных Цитата juice @ - System.Runtime.Serialization.NetDataContractSerializer совсем не собственный, а от MS и отличается от стандартного для WCF System.Runtime.Serialization.DataContractSerializer - только тем, что сериализует иформацию о типах, которая позволяет корректро десериализовать интерфейсные ссылки. Правда избыточность немного больше.в виде написания собственного сереализующего кода Так что нужно его просто подключить для использования в определенные методы контрактов. Все как бы просто, но упущен один момент - соглашения. Если клиент будет не .NET, тяжко ему будет разбирать такие завалы, и авторы вышеупомянутой статьи этого не предусмотрели. А еще они не предусмотрели что коллекции могут быть lazy, и тогда теряется смысл передачи их между доменами. Сыровато пока, как на мой взгляд, хотя если напильником... |
Сообщ.
#7
,
|
|
|
|