///// <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);
        }
Exemplo n.º 2
0
        public EntityFieldValueCollection ToFieldValueCollection()
        {
            EntityFieldValueCollection result = new EntityFieldValueCollection();

            this.OrderBy(p => p.SortNo).ForEach(p =>
            {
                result.Add(new EntityFieldValue(p));
            });

            return(result);
        }
Exemplo n.º 3
0
        /// <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);
        }