<$BlogRSDUrl$>

12 maio 2005

 
A seriação do DataObject

Visto não ser possível seriar uma DataRow o DataObject não pode ser seriado a menos que, a DataRow seja seriada dentro de um DataSet.

Para evitar ter de criar um DataSet com uma DataTable com uma DataRow, tivemos de alterar o DataObject.

Uma hipotese passa por criar objectos wrapper que contenha a informação do objecto, mas obrigava a criar, para cada objecto, o objecto wrapper.

A solução passou por alterar o DataObject por forma a não seriar a DataRow mas sim apenas o seu conteúdo, no destino é criado um outro objecto denominado PiscoDataConteiner que artmazena esses valores numa HashTable permitindo o acesso aos mesmos


05 maio 2005

 
O drama, o horror, a vida real

James,
I think this may be a bug and I hope somebody from Microsoft can eitherconfirm or deny this for me.
I'm trying to Clone (deep copy) a class that wraps a DataRow, but uponserializing the DataRow, I get the following exception:System.Runtime.Serialization.SerializationException
Additional information: The typeSystem.Xml.XmlBoundElement in AssemblySystem.Data, Version=1.0.3300.0, Culture=neutral,PublicKeyToken=b77a5c561934e089 is not marked as serializable.

Anwer:
This is (what every developer dreads to hear) "by design".
The DataRow hasno default constructor and no custom serializable method - either of whichwould be required for what you want. In order for a DataRow to beserialized, it must belong to a DataTable in a DataSet - the DataSet iscurrently the smallest unit of data that can be serialized.
We are aware of this limitation and it is due to change in future versions of the product.
Malcolm StewartMicrosoft Developer SupportThis posting is provided "AS IS", with no warranties, and confers no rights.
 
DataModelAdapter para suportar diversos serviços

Problema:
Pelo facto de existir a tabela DataObject em cada um dos serviços não é possivel carregar os vários schemas no mesmo DataSet do DataModelAdapter

Soluções:
- Fazer mapeamento das várias taqbelas DataObject para nomes únicos, por exemplo baseado no namespace do serviço. Gestão complicada dessas tabelas e do mapeamento de nomes.
- Ter um DataSet por cada serviço que se registe no DataModelAdapter. Permite uma gestão ao serviço e evita conflitos de nome.

ServiceDataManager
Serviço que realiza a gestão de dados de um serviço. É composto por um DataSet que armazena os dados locais desse serviço.
O DataModelAdapter instancia um SDM por cada serviço registado.
Cada serviço é identificado pelo namespace dos seus DataObjects. Cada namespace é considerado um serviço diferente.



This page is powered by Blogger. Isn't yours?