/// <summary> /// 填充读取的默认值 /// </summary> /// <param name="property"></param> /// <param name="node"></param> protected virtual void FillOrmPropertyReadNullValueByXmlNode(OrmPropertyInfo property, XmlNode node) { if (node.Attributes == null || node.Attributes["ReadNullValue"] == null) { return; } property.HasReadNullValue = true; if (!node.Attributes["ReadNullValue"].Value.Equals("null")) { property.ReadNullValue = Convert.ChangeType(node.Attributes["ReadNullValue"].Value, property.PropertyType); } }
/// <summary> /// 根据property节点填充map /// </summary> /// <param name="info"></param> /// <param name="nodes"></param> protected virtual void FillOrmPropertyMapByPropertyXmlNodes(OrmObjectInfo info, XmlNodeList nodes) { foreach (XmlNode node in nodes) { OrmPropertyInfo pi = GetOrmPropertyByXmlNodeAndOrmObject(node, info); if (pi == null) { continue; } FillOrmPropertyMapByXmlNode(info, pi, node); } }
/// <summary> /// 填充属性map /// </summary> /// <param name="ormObject"></param> /// <param name="property"></param> /// <param name="node"></param> protected virtual void FillOrmPropertyMapByXmlNode(OrmObjectInfo ormObject, OrmPropertyInfo property, XmlNode node) { XmlNode xnMap = node.SelectSingleNode("MapObject"); if (xnMap != null) { property.Map = new OrmMapInfo { Orms = Orms, MapObjectName = xnMap.Attributes["Name"].Value }; FillOrmPropertyMapKeyByXmlNode(ormObject, property, xnMap); FillOrmPropertyMapOperateByXmlNode(property, xnMap); } }
/// <summary> /// 根据property节点填充填充属性 /// </summary> /// <param name="info"></param> /// <param name="nodes"></param> protected virtual void FillOrmPropertyByPropertyXmlNodes(OrmObjectInfo info, XmlNodeList nodes) { foreach (XmlNode nd in nodes) { var pi = new OrmPropertyInfo { ObjectName = info.ObjectName, Orms = Orms }; info.Properties.Add(pi); FillOrmPropertyBaseByXmlNode(info, pi, nd); FillOrmPropertyDefaultByXmlNode(pi, nd); FillOrmPropertyOperatorModeByXmlNode(pi, nd); } }
/// <summary> /// 填充操作属性 /// </summary> /// <param name="property"></param> /// <param name="node"></param> protected virtual void FillOrmPropertyOperatorModeByXmlNode(OrmPropertyInfo property, XmlNode node) { if (node.Attributes != null && node.Attributes["OperatorMode"] != null) { if (node.Attributes["OperatorMode"].Value.Equals("None")) { return; } string[] values = node.Attributes["OperatorMode"].Value.Split('|'); FillOrmPropertyOperatorModeByValues(property, values); } else { FillOrmPropertyOperatorDefalutMode(property); } }
/// <summary> /// 根据值设置属性操作 /// </summary> /// <param name="property"></param> /// <param name="values"></param> protected virtual void FillOrmPropertyOperatorModeByValues(OrmPropertyInfo property, string[] values) { foreach (var s in values) { switch (s) { case "Add": property.AllowAdd = true; break; case "Modify": property.AllowModify = true; break; case "Read": property.AllowRead = true; break; case "Remove": property.AllowRemove = true; break; case "Restore": property.AllowRestore = true; break; } } }
/// <summary> /// 填充属性基本信息 /// </summary> /// <param name="ormObject"></param> /// <param name="property"></param> /// <param name="node"></param> protected virtual void FillOrmPropertyBaseByXmlNode(OrmObjectInfo ormObject, OrmPropertyInfo property, XmlNode node) { if (node.Attributes == null) { return; } property.PropertyName = node.Attributes["PropertyName"].Value; property.NickPropertyName = node.Attributes["NickPropertyName"] == null ? null : node.Attributes["NickPropertyName"].Value.Split(','); property.FieldName = node.Attributes["FieldName"] == null ? property.PropertyName : node.Attributes["FieldName"].Value; property.FieldType = node.Attributes["FieldType"] == null ? null : node.Attributes["FieldType"].Value; property.PropertyType = node.Attributes["PropertyType"] == null ? null : Type.GetType(node.Attributes["PropertyType"].Value); property.Length = node.Attributes["Length"] == null ? 0 : Convert.ToInt32(node.Attributes["Length"].Value); property.IsPrimaryKey = node.Attributes["IsPrimaryKey"] != null && Convert.ToBoolean(node.Attributes["IsPrimaryKey"].Value); property.IsIdentityKey = node.Attributes["IsIdentityKey"] != null && Convert.ToBoolean(node.Attributes["IsIdentityKey"].Value); property.IsCustom = node.Attributes["IsCustom"] != null && Convert.ToBoolean(node.Attributes["IsCustom"].Value); property.IsOptimisticLocker = node.Attributes["IsOptimisticLocker"] != null && Convert.ToBoolean(node.Attributes["IsOptimisticLocker"].Value); property.IsVersion = node.Attributes["IsVersion"] != null && Convert.ToBoolean(node.Attributes["IsVersion"].Value); ormObject.PrimaryProperty = property.IsPrimaryKey ? property : ormObject.PrimaryProperty; ormObject.VersionProperty = property.IsVersion ? property : ormObject.VersionProperty; }
/// <summary> /// 填充map操作 /// </summary> /// <param name="property"></param> /// <param name="node"></param> protected virtual void FillOrmPropertyMapOperateByXmlNode(OrmPropertyInfo property, XmlNode node) { if (node.Attributes == null) { return; } property.Map.IsAdd = node.Attributes["IsAdd"] != null && Convert.ToBoolean(node.Attributes["IsAdd"].Value); property.Map.IsRemove = node.Attributes["IsRemove"] != null && Convert.ToBoolean(node.Attributes["IsRemove"].Value); property.Map.IsModify = node.Attributes["IsModify"] != null && Convert.ToBoolean(node.Attributes["IsModify"].Value); property.Map.IsRestore = node.Attributes["IsRestore"] != null && Convert.ToBoolean(node.Attributes["IsRestore"].Value); property.Map.IsRemove = node.Attributes["IsRemove"] != null && Convert.ToBoolean(node.Attributes["IsRemove"].Value); property.Map.IsGreedyLoad = node.Attributes["IsGreedyLoad"] != null && Convert.ToBoolean(node.Attributes["IsGreedyLoad"].Value); property.Map.IsLazyLoad = node.Attributes["IsLazyLoad"] != null && Convert.ToBoolean(node.Attributes["IsLazyLoad"].Value); property.Map.IsRemote = node.Attributes["IsRemote"] != null && Convert.ToBoolean(node.Attributes["IsRemote"].Value); property.Map.IsRemoveCache = node.Attributes["IsRemoveCache"] != null && Convert.ToBoolean(node.Attributes["IsRemoveCache"].Value); property.Map.RemoteName = node.Attributes["RemoteName"] == null ? "" : node.Attributes["RemoteName"].Value.ToLower(); if (node.Attributes["MapType"] != null) { property.Map.MapType = (OrmMapType)Enum.Parse(typeof(OrmMapType), node.Attributes["MapType"].Value); } }
/// <summary> /// 填充map基本属性 /// </summary> /// <param name="ormObject"></param> /// <param name="property"></param> /// <param name="node"></param> protected virtual void FillOrmPropertyMapKeyByXmlNode(OrmObjectInfo ormObject, OrmPropertyInfo property, XmlNode node) { if (node == null || node.Attributes == null) { return; } property.Map.ObjectProperty = ormObject.GetPropertyInfo(node.Attributes["ObjectProperty"].Value); property.Map.MapObjectProperty = property.Map.GetMapObject().GetPropertyInfo(node.Attributes["MapObjectProperty"].Value); }
/// <summary> /// 设置属性默认的操作 /// </summary> /// <param name="property"></param> protected virtual void FillOrmPropertyOperatorDefalutMode(OrmPropertyInfo property) { property.AllowAdd = true; property.AllowModify = !property.IsPrimaryKey; property.AllowRead = true; }
/// <summary> /// 填充默认信息 /// </summary> /// <param name="property"></param> /// <param name="node"></param> protected virtual void FillOrmPropertyDefaultByXmlNode(OrmPropertyInfo property, XmlNode node) { FillOrmPropertyUnAddValueByXmlNode(property, node); FillOrmPropertyUnModifyValueByXmlNode(property, node); FillOrmPropertyReadNullValueByXmlNode(property, node); }