/// <summary> /// 获取ElementDataType对应的C#中的数据类型 /// </summary> /// <param name="element">节点元素</param> /// <returns>ElementDataType对应的C#中的数据类型</returns> public static Type GetType(DomainObjectElement element) { if (element == null) { throw new ArgumentNullException("ElementValueWrapper.GetType.DomainObjectElement"); } switch (element.DataType) { case ElementDataType.String: case ElementDataType.Text: return(typeof(string)); case ElementDataType.Boolean: case ElementDataType.Integer: return(typeof(int)); case ElementDataType.Decimal: return(typeof(decimal)); case ElementDataType.Date: case ElementDataType.DateTime: return(typeof(DateTime)); case ElementDataType.Binary: return(typeof(byte[])); default: throw new NotSupportedException(element.DataType.ToString()); } }
public static string ParseOrderByClause(OrderByClause orderByClause, DomainObject domainObject, DataObject dataObject) { var fieldType = orderByClause.FieldType; var columns = new Dictionary<string, DataColumn>(); var elements = new Dictionary<string, DomainObjectElement>(); foreach (var field in orderByClause.OrderByFields) { DataColumn column = null; DomainObjectElement element = null; switch (fieldType) { case FieldType.Column: column = dataObject.Columns.FirstOrDefault(i => i.ColumnName == field); element = domainObject.Elements.FirstOrDefault(i => i.DataColumnID == column.ID); break; case FieldType.Element: element = domainObject.Elements.FirstOrDefault(i => i.Name == field); column = dataObject.Columns.FirstOrDefault(i => i.ID == element.DataColumnID || i.ID == field); break; case FieldType.FunctionExpression: throw new NotSupportedException("OrderByClause.FieldType.FunctionExpression"); } columns.Add(field, column); elements.Add(field, element); } return string.Format("{0} {1}", string.Join(",", columns.Values.Select(i => i.ColumnName)), orderByClause.OrderByType.ToString()); }
private ResultMappingItem CreateAssoMappingItem(DomainObject domainObject, DomainObjectElement element) { var item = new ResultMappingItem() { Property = element.PropertyName, ItemType = ResultMappingItemType.ResultMapping, }; return(item); }
private ResultMappingItem CreateCommonMappingItem(DomainObject domainObject, DomainObjectElement element) { var item = new ResultMappingItem() { NullValue = element.DefaultValue, Property = element.PropertyName, ItemType = ResultMappingItemType.Normal, Column = domainObject.DataObject.Columns.FirstOrDefault(i => i.ID == element.DataColumnID).ColumnName }; return(item); }
private void MappingVirtualProperty(DomainObjectElement element, object obj, System.Reflection.PropertyInfo[] props, ResultMappingItem item) { try { var prop = props.FirstOrDefault(i => string.Equals(i.Name, item.Property, StringComparison.OrdinalIgnoreCase)); prop.SetValue(obj, element.DefaultValue); } catch (Exception e) { e.Data.Add("PropertyName", item.Property); e.Data.Add("ColumnName", item.Column); throw e; } }
/// <summary> /// 转化元素对应字段的值。将日期的值转化成相应的格式字符串。 /// </summary> /// <param name="element">元素。</param> /// <param name="elementValue">元素对应字段的值。</param> /// <returns>转化后的值。</returns> public static object ConvertElementValue(DomainObjectElement element, object elementValue) { if (element == null) { throw new ArgumentNullException("ElementValueWrapper.ConvertElementValue.DomainObjectElement"); } switch (element.DataType) { case ElementDataType.Date: // 系统的短日期格式。兼容以前的日期格式。 if (string.IsNullOrEmpty(Convert.ToString(elementValue)) || (Convert.ToDateTime(elementValue) == new DateTime())) { return(System.DBNull.Value); } return(DateTimeToStringByCHAR8(Convert.ToDateTime(elementValue))); case ElementDataType.DateTime: if (string.IsNullOrEmpty(Convert.ToString(elementValue)) || (Convert.ToDateTime(elementValue) == new DateTime())) { return(System.DBNull.Value); } return(elementValue); case ElementDataType.Binary: byte[] byteAry = elementValue as Byte[]; if ((byteAry != null) && (byteAry.Length == 0)) { return(System.DBNull.Value); } return(elementValue); default: return(elementValue); } }
private static ConditionStatement ParseConditionStatement(FilterClause filterClause, DomainObject domainObject, DataObject dataObject, SqlTable sqlTable) { var conditionStatement = new ConditionStatement(); conditionStatement.SetLogicalOperator(filterClause.LogicalOperator); conditionStatement.ConditionField.Table = sqlTable; conditionStatement.RelationalOperator = filterClause.RelationalOperator; conditionStatement.ConditionFieldValue = new ConditionFieldValue() { ValueType = filterClause.FilterFieldValue.ValueType, IsNull = filterClause.FilterFieldValue.IsNull, Value = filterClause.FilterFieldValue.FiledValue, }; DataColumn column = null; DomainObjectElement element = null; switch (filterClause.FilterField.FieldType) { case FieldType.Column: column = dataObject.Columns.FirstOrDefault(i => i.ColumnName == filterClause.FilterField.Field); conditionStatement.ConditionField.FieldName = column.ColumnName; break; case FieldType.Element: element = domainObject.Elements.FirstOrDefault(i => i.Name == filterClause.FilterField.Field || i.ID == filterClause.FilterField.Field); column = dataObject.Columns.FirstOrDefault(i => i.ID == element.DataColumnID); conditionStatement.ConditionField.FieldName = column.ColumnName; break; case FieldType.FunctionExpression: conditionStatement.IsExpression = true; conditionStatement.ConditionField.FieldName = filterClause.FilterField.Field; break; default: break; } conditionStatement.ConditionFieldValue.ConditionFieldName = column.ColumnName; return conditionStatement; }
public static string ParseFilterClause(FilterClause filterClause, DomainObject domainObject, DataObject dataObject) { var fieldType = filterClause.FilterField.FieldType; DataColumn column = null; DomainObjectElement element = null; switch (fieldType) { case FieldType.Column: column = dataObject.Columns.FirstOrDefault(i => i.ColumnName == filterClause.FilterField.Field); element = domainObject.Elements.FirstOrDefault(i => i.DataColumnID == column.ID); break; case FieldType.Element: element = domainObject.Elements.FirstOrDefault(i => i.Name == filterClause.FilterField.Field || i.ID == filterClause.FilterField.Field); column = dataObject.Columns.FirstOrDefault(i => i.ID == element.DataColumnID); break; case FieldType.FunctionExpression: return filterClause.FilterField.Field; } var relationOper = RelationalOperatorUtis.ConvertToString(filterClause.RelationalOperator); if (column.IsNumeric) { if (filterClause.FilterFieldValue.IsNull) { return string.Format("{0} is null ", element.Alias); } else { if (relationOper.Value) { return string.Format("{0} {1} {2}", element.Alias, relationOper.Key, filterClause.FilterFieldValue.FiledValue); } else { return string.Format(element.Alias + " " + relationOper.Key, filterClause.FilterFieldValue.FiledValue); } } } else { if (filterClause.FilterFieldValue.IsNull) { return string.Format("{0} is null ", element.Alias); } else { if (relationOper.Value) { return string.Format("{0} {1}'{2}'", element.Alias, relationOper.Key, filterClause.FilterFieldValue.FiledValue); } else { return string.Format(element.Alias + " " + relationOper.Key, filterClause.FilterFieldValue.FiledValue); } } } }
private ResultMappingItem CreateVirtualMappingItem(NSharding.DomainModel.Spi.DomainObject domainObject, DomainObjectElement element) { var item = new ResultMappingItem() { NullValue = element.DefaultValue, Property = element.PropertyName, ItemType = ResultMappingItemType.Virtual, Column = element.Alias, ParentDomainObjectId = domainObject.ID }; return(item); }
private ResultMappingItem CreateEnumMappingItem(NSharding.DomainModel.Spi.DomainObject domainObject, DomainObjectElement element) { var item = new ResultMappingItem() { NullValue = element.DefaultValue, Property = element.PropertyName, ItemType = ResultMappingItemType.Enum, Column = element.Alias, //Column = domainObject.DataObject.Columns.FirstOrDefault(i => i.ID == element.DataColumnID).ColumnName, TypeHandler = element.PropertyType, ParentDomainObjectId = domainObject.ID }; return(item); }
private ResultMappingItem CreateVirtualMappingItem(DomainObject domainObject, DomainObjectElement element) { var item = new ResultMappingItem() { NullValue = element.DefaultValue, Property = element.PropertyName, ItemType = ResultMappingItemType.Virtual, Column = null }; return(item); }