On Mon, Mar 19, 2012 at 8:32 PM, Michael <mhartma
...@yahoo.com> wrote:
> Active record requires collections to be IList<T>, which I can't seem
> to deserialize. Does anyone have any suggestions to modify my AR
> classes (or serialization/deserialization code) to allow me to
> serialize/deserialize these AR classes?
> [Serializable]
> [DataContract]
> [ActiveRecord("Patients")]
> public class Patient : ActiveRecordBase<Patient>
> {
> [DataMember]
> [PrimaryKey(Generator = PrimaryKeyType.Identity, Column =
> "PatientId")]
> public virtual long Id { get; set; }
> [DataMember]
> [Property(NotNull = true, Length = 100)]
> public virtual string First { get; set; }
> [DataMember]
> [Property(NotNull = true, Length = 100)]
> public virtual string Last { get; set; }
> [DataMember]
> [XmlArray]
> [HasMany(typeof(Address), Cascade =
> ManyRelationCascadeEnum.AllDeleteOrphan, Table = "Addresses",
> ColumnKey = "PatientId", Inverse = true)]
> public virtual IList<Address> Addresses { get; set; }
> }
> [Serializable]
> [DataContract]
> [ActiveRecord("Addresses")]
> public class Address : ActiveRecordBase<Address>
> {
> [DataMember]
> [PrimaryKey(Generator = PrimaryKeyType.Identity, Column =
> "AddressId")]
> public virtual long Id { get; set; }
> [DataMember]
> [Property(NotNull = true, Length = 255)]
> public virtual string Address1 { get; set; }
> [DataMember]
> [Property(NotNull = true, Length = 255)]
> public virtual string City { get; set; }
> [DataMember]
> [Property(NotNull = true, Length = 10)]
> public virtual string PostalCode { get; set; }
> [DataMember]
> [Property(NotNull = true, Length = 50)]
> public virtual string State { get; set; }
> }
> Here's my code to serialize & deserialize:
> public static string Serialize(object objectToSerialize)
> {
> var ns = new XmlSerializerNamespaces();
> ns.Add(String.Empty, String.Empty);
> var memoryStream = new MemoryStream();
> var settings = new XmlWriterSettings {Indent = false,
> OmitXmlDeclaration = true, Encoding = Encoding.UTF8};
> var serializer = new XmlSerializer(typeof(T));
> var writer = XmlWriter.Create(memoryStream, settings);
> serializer.Serialize(writer, objectToSerialize, ns);
> return Utf8ByteArrayToString(memoryStream.ToArray());
> }
> public static object Deserialize(string objectXml, Type[]
> additionalTypes)
> {
> var encoding = new UTF8Encoding();
> var byteArray = encoding.GetBytes(objectXml);
> var memoryStream = new MemoryStream(byteArray);
> var xmlRoot = XElement.Load(memoryStream);
> var o = new XmlSerializer(typeof(T),
> additionalTypes).Deserialize(xmlRoot.CreateReader());
> return o;
> }
> Thanks!
> --
> You received this message because you are subscribed to the Google Groups
> "Castle Project Users" group.
> To post to this group, send email to castle-project-users@googlegroups.com
> .
> To unsubscribe from this group, send email to
> castle-project-users+unsubscribe@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/castle-project-users?hl=en.