///// <summary> ///// 处理ID的变更 ///// </summary> //protected override void OnIDChanged() //{ // this._AllParentRelations = null; // this._AllParents = null; // this._CurrentlParents = null; //} protected override EntityFieldValueCollection GetFieldValueCollection() { if (this._Fields == null) { this._Fields = this.EntityDefine.Fields.ToFieldValueCollection(); } return(this._Fields); }
public EntityFieldValueCollection ToFieldValueCollection() { EntityFieldValueCollection result = new EntityFieldValueCollection(); this.OrderBy(p => p.SortNo).ForEach(p => { result.Add(new EntityFieldValue(p)); }); return(result); }
/// <summary> /// 反序列化 /// </summary> /// <param name="dictionary"></param> /// <param name="type"></param> /// <param name="serializer"></param> /// <returns></returns> public override object Deserialize(IDictionary <string, object> dictionary, Type type, JavaScriptSerializer serializer) { object EntityCodeName = null; object instanceID = null; DateTime createDate = DateTime.MinValue; dictionary.TryGetValue("EntityInstanceCode", out instanceID); dictionary.TryGetValue("EntityCodeName", out EntityCodeName); EntityCodeName.NullCheck("实体定义反序化失败,缺少EntityCodeName."); createDate = DateTime.MinValue; //海军写的方法,为减轻前台生成JSON压力,此方法为各子实体添加EntityCodeName属性。 SetCodeName(dictionary.GetValue("EntityFieldValue", new ArrayList()), EntityCodeName.ToString()); //根据创建日期获取实体 DynamicEntity entity = DEDynamicEntityAdapter.Instance.LoadByCodeName(EntityCodeName.ToString(), createDate) as DynamicEntity; DEEntityInstanceBase data = entity.CreateInstance(); if (instanceID != null && instanceID.ToString().IsNotEmpty()) { data.ID = instanceID.ToString(); } EntityFieldValueCollection values = JSONSerializerExecute.Deserialize <EntityFieldValueCollection>(dictionary.GetValue("EntityFieldValue", new ArrayList())) ?? new EntityFieldValueCollection(); values.ForEach(p => { var field = data.Fields.Where(f => f.Definition.Name == p.Definition.Name).FirstOrDefault(); if (field != null) { if (field.Definition.FieldType == Enums.FieldTypeEnum.Collection) { data.Fields.TrySetValue(field.Definition.Name, p.StringValue); } else { field.StringValue = p.StringValue; } } }); return(data); }