示例#1
0
        private void WriteElement(XmlSchema schema, XmlSchemaSequence sequence, CremaDataColumn dataColumn)
        {
            var element = new XmlSchemaElement()
            {
                Name           = dataColumn.ColumnName,
                SchemaTypeName = this.GetXmlQualifiedName(schema, dataColumn)
            };
            var defaultValue = CremaXmlConvert.ToString(dataColumn.DefaultValue, dataColumn.DataType);

            if (string.IsNullOrEmpty(defaultValue) == false)
            {
                element.DefaultValue = defaultValue;
            }
            if (dataColumn.AllowDBNull == true && dataColumn.IsKey == false)
            {
                element.MinOccursString = "0";
            }

            element.WriteAppInfo(CremaSchema.ColumnInfo, CremaSchema.Creator, dataColumn.CreationInfo.ID, schema.TargetNamespace);
            element.WriteAppInfo(CremaSchema.ColumnInfo, CremaSchema.CreatedDateTime, dataColumn.CreationInfo.DateTime, schema.TargetNamespace);
            element.WriteAppInfo(CremaSchema.ColumnInfo, CremaSchema.Modifier, dataColumn.ModificationInfo.ID, schema.TargetNamespace);
            element.WriteAppInfo(CremaSchema.ColumnInfo, CremaSchema.ModifiedDateTime, dataColumn.ModificationInfo.DateTime, schema.TargetNamespace);
            element.WriteAppInfo(CremaSchema.ColumnInfo, CremaSchema.AutoIncrement, dataColumn.AutoIncrement, schema.TargetNamespace);
            element.WriteAppInfo(CremaSchema.ColumnInfo, CremaSchema.ID, dataColumn.ColumnID, schema.TargetNamespace);
            element.WriteAppInfo(CremaSchema.ColumnInfo, CremaSchema.Tags, dataColumn.Tags, schema.TargetNamespace);
            element.WriteAppInfo(CremaSchema.ColumnInfo, CremaSchema.ReadOnly, dataColumn.ReadOnly, schema.TargetNamespace);

            element.WriteDescription(dataColumn.Comment);
            sequence.Items.Add(element);
        }
示例#2
0
        private void WriteAttribute(XmlSchema schema, XmlSchemaComplexType complexType, CremaAttribute attribute)
        {
            var schemaAttribute = new XmlSchemaAttribute()
            {
                Name           = attribute.AttributeName,
                SchemaTypeName = GetSystemQualifiedName(attribute.DataType, schema.TargetNamespace)
            };

            if (attribute.AllowDBNull == false)
            {
                if (attribute.DefaultValue == DBNull.Value)
                {
                    schemaAttribute.Use = XmlSchemaUse.Required;
                }
                else
                {
                    schemaAttribute.Use = XmlSchemaUse.Optional;
                }
            }

            var defaultValue = attribute.DefaultValue;

            if (defaultValue != DBNull.Value)
            {
                schemaAttribute.DefaultValue = CremaXmlConvert.ToString(defaultValue, attribute.DataType);
            }

            schemaAttribute.WriteAppInfo(CremaSchema.AttributeInfo, CremaSchema.AutoIncrement, attribute.AutoIncrement, schema.TargetNamespace);
            schemaAttribute.WriteAppInfo(CremaSchema.AttributeInfo, CremaSchema.Comment, attribute.Comment, schema.TargetNamespace);

            complexType.Attributes.Add(schemaAttribute);
        }
示例#3
0
        internal static void WriteFields(XmlWriter writer, string propertyName, object[] fields)
        {
            writer.WriteStartElement(propertyName);

            if (fields != null)
            {
                foreach (var item in fields)
                {
                    writer.WriteStartElement("item");
                    if (item is DBNull)
                    {
                        writer.WriteAttributeString("type", nameof(DBNull));
                    }
                    else if (item != null)
                    {
                        if (item is Guid)
                        {
                            writer.WriteAttributeString("type", nameof(Guid));
                        }
                        else
                        {
                            writer.WriteAttributeString("type", item.GetType().GetTypeName());
                        }
                        writer.WriteString(CremaXmlConvert.ToString(item));
                    }
                    writer.WriteEndElement();
                }
            }

            writer.WriteEndElement();
        }
示例#4
0
 public DomainFieldInfo(object field)
 {
     if (field is DBNull)
     {
         this.Type  = nameof(DBNull);
         this.Value = null;
     }
     else if (field != null)
     {
         if (field is Guid)
         {
             this.Type = nameof(Guid);
         }
         else
         {
             this.Type = field.GetType().GetTypeName();
         }
         this.Value = CremaXmlConvert.ToString(field);
     }
     else
     {
         this.Type  = null;
         this.Value = null;
     }
 }
示例#5
0
        private void ReadColumn(XmlSchemaElement element, CremaDataTable dataTable)
        {
            var dataColumn = new CremaDataColumn()
            {
                InternalColumnName = element.Name,
                InternalComment    = element.ReadDescription(),
            };

            this.ReadColumnDataType(element.ElementSchemaType as XmlSchemaSimpleType, dataColumn);

            if (element.MinOccursString == null)
            {
                dataColumn.InternalAllowDBNull = false;
            }

            if (string.IsNullOrEmpty(element.DefaultValue) == false)
            {
                dataColumn.InternalDefaultValue = CremaXmlConvert.ToValue(element.DefaultValue, dataColumn.DataType);
            }

            if (this.version.Major == CremaSchema.MajorVersion)
            {
                this.ReadColumnInfo(element, dataColumn);
            }
            else
            {
                this.ReadColumnInfoVersion2(element, dataColumn);
            }

            dataTable.Columns.Add(dataColumn);
        }
示例#6
0
        private void ReadAttribute(XmlSchemaAttribute schemaAttribute, CremaDataTable dataTable)
        {
            if (schemaAttribute.Name == CremaSchema.RelationID)
            {
                return;
            }

            var attributeName = schemaAttribute.Name == CremaSchemaObsolete.DataLocation ? CremaSchema.Tags : schemaAttribute.Name;
            var attribute     = dataTable.Attributes[attributeName];

            if (attribute == null)
            {
                attribute = dataTable.Attributes.Add(attributeName);
            }

            if (schemaAttribute.Use == XmlSchemaUse.Required)
            {
                attribute.AllowDBNull = false;
            }

            if (string.IsNullOrEmpty(schemaAttribute.DefaultValue) == false)
            {
                attribute.DefaultValue = CremaXmlConvert.ToValue(schemaAttribute.DefaultValue, attribute.DataType);
            }

            attribute.AutoIncrement = schemaAttribute.ReadAppInfoAsBoolean(CremaSchema.AttributeInfo, CremaSchema.AutoIncrement);
            attribute.Comment       = schemaAttribute.ReadAppInfoAsString(CremaSchema.AttributeInfo, CremaSchema.Comment);
        }
示例#7
0
        internal static Guid ReadAppInfoAsGuid(this XmlSchemaAnnotated annotated, string nodeName, string attributeName, Guid defaultValue)
        {
            var text = ReadAppInfoAsString(annotated, nodeName, attributeName);

            if (text == null)
            {
                return(defaultValue);
            }
            return(CremaXmlConvert.ToGuid(text));
        }
示例#8
0
        internal static DateTime ReadAppInfoAsDateTime(this XmlSchemaAnnotated annotated, string nodeName, string attributeName, XmlDateTimeSerializationMode mode, DateTime defaultValue)
        {
            var text = ReadAppInfoAsString(annotated, nodeName, attributeName);

            if (text == null)
            {
                return(defaultValue);
            }
            return(CremaXmlConvert.ToDateTime(text, mode));
        }
示例#9
0
        protected override void OnReadXml(XmlReader reader)
        {
            var value1 = reader.ReadElementContentAsString();

            this.value = (T)CremaXmlConvert.ToValue(value1, typeof(T));
            reader.MoveToContent();
            var value2 = reader.ReadElementContentAsString();

            this.operatorType = (OperatorType)Enum.Parse(typeof(OperatorType), value2);
        }
示例#10
0
 public object ToValue()
 {
     if (this.Value != null)
     {
         var type = this.Type == nameof(Guid) ? typeof(Guid) : CremaDataTypeUtility.GetType(this.Type);
         return(CremaXmlConvert.ToValue(this.Value, type));
     }
     else if (this.Type == nameof(DBNull))
     {
         return(DBNull.Value);
     }
     else
     {
         return(null);
     }
 }
示例#11
0
        internal static object[] ReadFields(XmlReader reader, string propertyName)
        {
            reader.MoveToContent();
            if (reader.IsEmptyElement == false)
            {
                var fieldList = new List <object>();
                reader.ReadStartElement(propertyName);

                while (reader.MoveToContent() == XmlNodeType.Element)
                {
                    var attr = reader.GetAttribute("type");
                    if (reader.IsEmptyElement == false)
                    {
                        var text  = reader.ReadElementContentAsString();
                        var type  = attr == nameof(Guid) ? typeof(Guid) : CremaDataTypeUtility.GetType(attr);
                        var field = CremaXmlConvert.ToValue(text, type);
                        fieldList.Add(field);
                    }
                    else if (attr == nameof(DBNull))
                    {
                        fieldList.Add(DBNull.Value);
                        reader.Skip();
                    }
                    else
                    {
                        fieldList.Add(null);
                        reader.Skip();
                    }
                }
                reader.ReadEndElement();
                return(fieldList.ToArray());
            }
            else
            {
                reader.Skip();
                return(null);
            }
        }
示例#12
0
 internal static void WriteAppInfo(this XmlSchemaAnnotated annotated, string nodeName, string attributeName, Guid value, string ns, Guid defaultValue)
 {
     WriteAppInfo(annotated, nodeName, attributeName, CremaXmlConvert.ToString(value), ns, CremaXmlConvert.ToString(defaultValue));
 }