/// <summary>
        /// Записывает данные LOB-свойства
        /// </summary>
        /// <param name="xobj">объект-владелец свойства</param>
        /// <param name="xmlProp">xml-свойство</param>
        /// <param name="propInfo">описание свойства</param>
        private void writeLOBProp(DomainObjectData xobj, XmlElement xmlProp, XPropInfoBase propInfo)
        {
            string    sPropName = propInfo.Name;
            XPropType vt        = propInfo.VarType;
            object    vPropValue;
            int       nDataSize = 0;

            if (xobj.IsNew)
            {
                vPropValue = xobj.GetUpdatedPropValue(sPropName);
                if (vPropValue == null || vPropValue == DBNull.Value)
                {
                    nDataSize = 0;
                }
                else
                {
                    xmlProp.InnerText = XmlPropValueWriter.GetXmlTypedValue(vPropValue, vt);
                }
            }
            else
            {
                nDataSize = xobj.GetLoadedPropDataSize(sPropName);
                if (nDataSize > 0)
                {
                    vPropValue = xobj.GetLoadedPropValue(sPropName);
                    if (vPropValue == null)
                    {
                        // данные в свойстве есть, но не загружены
                        xmlProp.SetAttribute("loaded", "0");
                    }
                    else
                    {
                        xmlProp.InnerText = XmlPropValueWriter.GetXmlTypedValue(vPropValue, vt);
                    }
                }
            }
            xmlProp.SetAttribute("data-size", XmlConvert.ToString(nDataSize));
        }
        private void serializePropertyInternal(DomainObjectData xobj, XmlElement xmlProp, PreloadsNavigator nav)
        {
            DomainObjectDataSet dataSet = xobj.Context;
            string sPropName;
            object vPropValue;

            sPropName = xmlProp.LocalName;
            XPropInfoBase propInfo = xobj.TypeInfo.GetProp(sPropName);

            switch (propInfo.VarType)
            {
            case XPropType.vt_bin:
            case XPropType.vt_text:
                writeLOBProp(xobj, xmlProp, propInfo);
                break;

            case XPropType.vt_object:
                if (propInfo is XPropInfoObjectScalar)
                {
                    // скалярное свойство
                    if (xobj.IsNew)
                    {
                        vPropValue = xobj.GetUpdatedPropValue(sPropName);
                    }
                    else
                    {
                        vPropValue = xobj.GetLoadedPropValue(sPropName);
                    }

                    if (vPropValue != null && !(vPropValue is DBNull))
                    {
                        addValueIntoObjectProp(dataSet, xmlProp, (XPropInfoObjectScalar)propInfo, (Guid)vPropValue, nav);
                    }
                }
                else
                {
                    // массивное свойство
                    if (xobj.IsNew)
                    {
                        vPropValue = xobj.GetUpdatedPropValue(sPropName);
                    }
                    else
                    {
                        vPropValue = xobj.GetLoadedPropValue(sPropName);
                    }

                    writeArrayProp(xobj, xmlProp, vPropValue, (XPropInfoObject)propInfo, nav);
                }
                break;

            default:
                if (xobj.IsNew)
                {
                    vPropValue = xobj.GetUpdatedPropValue(sPropName);
                }
                else
                {
                    vPropValue = xobj.GetLoadedPropValue(sPropName);
                }

                if (vPropValue != null && !(vPropValue is DBNull))
                {
                    xmlProp.InnerText = XmlPropValueWriter.GetXmlTypedValue(vPropValue, propInfo.VarType);
                }
                else
                {
                    xmlProp.InnerText = String.Empty;
                }
                break;
            }
        }