Beispiel #1
0
        /// <summary>
        /// 生成查询SQL
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="mapping"></param>
        /// <returns></returns>
        public virtual string PrepareLoadSql(DEEntityInstanceBase obj)
        {
            InsertSqlClauseBuilder builder           = PrepareInsertSqlBuilder(obj);
            WhereSqlClauseBuilder  primaryKeyBuilder = PrepareWhereSqlBuilder(obj);

            return(string.Format("SELECT * FROM {0} WHERE {1}", GetTableName(obj), primaryKeyBuilder.ToSqlString(TSqlBuilder.Instance)));
        }
        /// <summary>
        /// 检查数据的状态
        /// </summary>
        /// <param name="objsToCheck"></param>
        protected void CheckObjectStatus(params DEEntityInstanceBase[] objsToCheck)
        {
            List <DEEntityInstanceBase> normalizedObjsToCheck = new List <DEEntityInstanceBase>();

            InSqlClauseBuilder idBuilder = new InSqlClauseBuilder("ID");

            normalizedObjsToCheck.ForEach(o => idBuilder.AppendItem(o.ID));

            if (idBuilder.IsEmpty == false)
            {
                DEEntityInstanceBaseCollection originalDataList = DEInstanceAdapter.Instance.Load(idBuilder);

                string opName = EnumItemDescriptionAttribute.GetDescription(this.OperationType);

                foreach (DEEntityInstanceBase objToCheck in normalizedObjsToCheck)
                {
                    if (originalDataList.ContainsKey(objToCheck.ID) == false)
                    {
                        throw new DEStatusCheckException(string.Format("ID为\"{0}\"的对象不存在,不能执行{1}操作", objToCheck.ID, opName));
                    }

                    DEEntityInstanceBase originalData = originalDataList[objToCheck.ID];

                    if (originalData.Status != SchemaObjectStatus.Normal)
                    {
                        throw new DEStatusCheckException(string.Format("ID为\"{0}\"动态实体对象状态不正常,不能执行{1}操作", objToCheck.ID, opName));
                    }
                }
            }
        }
Beispiel #3
0
        public void InstanceDeserialize()
        {
            DynamicEntity entity = MockData.CreateEntityAndChildEntity();

            DEEntityInstanceBase sourceInstance = entity.CreateInstance();

            //序列化之后的数据
            string json = JSONSerializerExecute.Serialize(sourceInstance);

            //反序列化
            DEEntityInstanceBase deserializedInstance = JSONSerializerExecute.Deserialize <DEEntityInstanceBase>(json);

            foreach (var sourceField in sourceInstance.Fields)
            {
                EntityFieldValue deserializedFieldValue = deserializedInstance.Fields.Where(p => p.Definition.Name == sourceField.Definition.Name).FirstOrDefault();

                Assert.IsNotNull(deserializedFieldValue);

                if (sourceField.Definition.FieldType == FieldTypeEnum.Collection)
                {
                    Assert.AreEqual(sourceField.Definition.ReferenceEntityCodeName, deserializedFieldValue.Definition.ReferenceEntityCodeName);
                }
                else
                {
                    Assert.AreEqual(sourceField.StringValue, deserializedFieldValue.StringValue);
                }
            }
        }
Beispiel #4
0
        /// <summary>
        ///  创建现在SQL语句生成器
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="mapping"></param>
        /// <returns></returns>
        protected virtual InsertSqlClauseBuilder PrepareInsertSqlBuilder(DEEntityInstanceBase obj)
        {
            InsertSqlClauseBuilder builder = new InsertSqlClauseBuilder();

            foreach (var filed in obj.Fields)
            {
                if (filed.Definition.IsInSnapshot)
                {
                    builder.AppendItem(filed.Definition.Name, filed.GetRealValue());
                }
            }
            if (!builder.ContainsDataField("ID"))
            {
                builder.AppendItem("ID", obj.ID);
            }
            if (!builder.ContainsDataField("CreateTime"))
            {
                builder.AppendItem("CreateTime", obj.CreateDate);
            }
            if (!builder.ContainsDataField("CreatorID"))
            {
                builder.AppendItem("CreatorID", obj.Creator.ID);
            }
            if (!builder.ContainsDataField("CreatorName"))
            {
                builder.AppendItem("CreatorName", obj.Creator.Name);
            }
            return(builder);
        }
Beispiel #5
0
        public void InstanceDeserializeWithData()
        {
            DEEntityInstanceBase sourceInstance = MockData.CreateEntityInstance();

            string json = JSONSerializerExecute.Serialize(sourceInstance);

            DEEntityInstanceBase deserializedInstance = JSONSerializerExecute.Deserialize <DEEntityInstanceBase>(json);

            foreach (var sourceField in sourceInstance.Fields)
            {
                EntityFieldValue deserializedField = deserializedInstance.Fields.Where(p => p.Definition.Name == sourceField.Definition.Name).FirstOrDefault();

                Assert.IsNotNull(deserializedField);

                if (sourceField.Definition.FieldType == FieldTypeEnum.Collection)
                {
                    DEEntityInstanceBaseCollection sourceChildren       = sourceField.GetRealValue() as DEEntityInstanceBaseCollection;
                    DEEntityInstanceBaseCollection deserializedChildren = deserializedField.GetRealValue() as DEEntityInstanceBaseCollection;

                    foreach (var sourceChild in sourceChildren)
                    {
                        var deserializedChild = deserializedChildren[sourceChild.ID];

                        Assert.IsNotNull(deserializedChild);
                    }
                }
                else
                {
                    Assert.AreEqual(sourceField.StringValue, deserializedField.StringValue);
                }
            }
        }
Beispiel #6
0
 public SaleOrderEntityMain_RFC(DEEntityInstanceBase instance)
 {
     this._ID        = instance.ID;
     this._I_ZJYBH   = instance.Fields.GetValue <string>("I_ZJYBH", "");
     this._E_MESSAGE = instance.Fields.GetValue <string>("E_MESSAGE", "");
     this._E_STATE   = instance.Fields.GetValue <string>("E_STATE", "");
 }
Beispiel #7
0
        public void InstanceSerializeWithDataTest()
        {
            bool flag = true;

            DEEntityInstanceBase instance = MockData.CreateEntityInstance();

            string json = JSONSerializerExecute.Serialize(instance);

            Console.WriteLine(json);

            instance.Fields.ForEach(f =>
            {
                if (f.Definition.FieldType == FieldTypeEnum.Collection)
                {
                    foreach (var item in f.Definition.ReferenceEntity.Fields)
                    {
                        Assert.IsTrue(json.Contains(item.Name));
                        Assert.IsTrue(json.Contains(item.Name + "Value"));
                    }
                }
                else
                {
                    Assert.IsTrue(json.Contains(f.Definition.Name));
                    Assert.IsTrue(json.Contains(f.Definition.Name + "Value"));
                }
            });

            Assert.IsTrue(flag, "序列化实体实例出错");
        }
Beispiel #8
0
        public void ValidateInstanceTest()
        {
            DEEntityInstanceBase instance = MockData.CreateInstaceWithAllTypeData() as DEEntityInstance;
            //DEEntityInstanceBase仅对字段值类型和长多进行验证
            ValidationResults result = instance.Validate();

            Assert.IsTrue(result.ResultCount == 0);
        }
Beispiel #9
0
        public void InstanceValidatorTest()
        {
            DEEntityInstanceBase instance = MockData.CreateInstaceWithAllTypeData() as DEEntityInstance;

            ValidationResults result = instance.Validate();

            Assert.IsTrue(result.ResultCount == 0);
        }
        /// <summary>
        /// 创建一个简单对象
        /// </summary>
        /// <returns>一个<see cref="DEEntityInstance"/>对象。</returns>
        protected virtual DEEntityInstanceBase CreateSimpleObject(string entityID)
        {
            DynamicEntity        entity = DESchemaObjectAdapter.Instance.Load(entityID) as DynamicEntity;
            DEEntityInstanceBase result = entity.CreateInstance();

            result.ID = Guid.NewGuid().ToString();
            return(result);
        }
Beispiel #11
0
        public void EntityInstanceMapping()
        {
            DEEntityInstanceBase instance = MockData.CreateInstanceWithData();

            List <SapValue> result = instance.ToParams("Tcode_test");

            //这儿的断言太扯,回头改
            Assert.IsNotNull(result, "实体实例转KeyValue报错");
        }
Beispiel #12
0
        /// <summary>
        /// 获取实体对应的快照表名称
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        protected virtual string GetTableName(DEEntityInstanceBase obj)
        {
            string table = this._TableName;

            if (table.IsNullOrEmpty())
            {
                table = GetTableName(obj.EntityDefine);
            }
            return(table);
        }
Beispiel #13
0
        /// <summary>
        /// 生成更新SQL
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public virtual string PrepareUpdateSql(DEEntityInstanceBase obj)
        {
            WhereSqlClauseBuilder  primaryKeyBuilder = PrepareWhereSqlBuilder(obj);
            UpdateSqlClauseBuilder updateBuilder     = PrepareUpdateSqlBuilder(obj);

            return(string.Format("UPDATE {0} SET {1} WHERE {2}",
                                 GetTableName(obj),
                                 updateBuilder.ToSqlString(TSqlBuilder.Instance),
                                 primaryKeyBuilder.ToSqlString(TSqlBuilder.Instance)));
        }
Beispiel #14
0
        public void EntityInstanceGetRealValueTest()
        {
            DEEntityInstanceBase instance = MockData.CreateInstaceWithAllTypeData();

            bool flag = Convert.ToBoolean(instance.Fields["Bool"].GetRealValue()) == true &&
                        Convert.ToDateTime(instance.Fields["DateTime"].GetRealValue()).ToString("yyyyMMdd") == "20140303" &&
                        Convert.ToDecimal(instance.Fields["Decimal"].GetRealValue()) == 99 &&
                        Convert.ToInt32(instance.Fields["Int"].GetRealValue()) == 99 &&
                        Convert.ToString(instance.Fields["String"].GetRealValue()) == "haoyk";

            Assert.IsTrue(flag, "实体实例获取强类型值失败");
        }
Beispiel #15
0
        public void AddEntityInstance()
        {
            DEEntityInstanceBase instance = MockData.CreateInstanceWithData();

            DEEntityInstanceBase result = DEInstanceAdapter.Instance.Load(instance.ID);

            var coll = result.Fields.FirstOrDefault(p => p.Definition.FieldType == FieldTypeEnum.Collection).GetRealValue() as DEEntityInstanceBaseCollection;

            decimal totalAmount = coll.Select(p => Convert.ToDecimal(p.Fields["单价"].StringValue)).Sum();

            Assert.AreEqual(200, totalAmount);
        }
Beispiel #16
0
        public static DEEntityInstanceBase CreateInstanceBaseObject(string entityID)
        {
            entityID.CheckStringIsNullOrEmpty <ArgumentNullException>("entityID");

            DynamicEntity entity = DESchemaObjectAdapter.Instance.Load(entityID) as DynamicEntity;

            entity.NullCheck <ArgumentNullException>("找不到编码为{0}的实体");

            DEEntityInstanceBase result = entity.CreateInstance();

            return(result);
        }
Beispiel #17
0
        /// <summary>
        /// 创建更新SQL语句生成器
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public virtual UpdateSqlClauseBuilder PrepareUpdateSqlBuilder(DEEntityInstanceBase obj)
        {
            UpdateSqlClauseBuilder builder = new UpdateSqlClauseBuilder();

            foreach (var filed in obj.Fields)
            {
                if (filed.Definition.IsInSnapshot)
                {
                    builder.AppendItem(filed.Definition.Name, filed.GetRealValue());
                }
            }
            return(builder);
        }
Beispiel #18
0
 public SaleOrderEntityChild_I_ZR5_SS02_RFC(DEEntityInstanceBase instance)
 {
     this._ID       = instance.ID;
     this._BUKRS    = instance.Fields.GetValue <string>("BUKRS", "");
     this._CZDAT    = instance.Fields.GetValue <string>("CZDAT", "");
     this._EDAT     = instance.Fields.GetValue <string>("EDAT", "");
     this._KUNNR    = instance.Fields.GetValue <string>("KUNNR", "");
     this._OIC_MOT  = instance.Fields.GetValue <string>("OIC_MOT", "");
     this._RMAN     = instance.Fields.GetValue <string>("RMAN", "");
     this._SALESNUM = instance.Fields.GetValue <string>("SALESNUM", "");
     this._VKBUR    = instance.Fields.GetValue <string>("VKBUR", "");
     this._VKORG    = instance.Fields.GetValue <string>("VKORG", "");
     this._VTWEG    = instance.Fields.GetValue <string>("VTWEG", "");
     this._YSHHS    = instance.Fields.GetValue <string>("YSHHS", "");
 }
Beispiel #19
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);
        }
Beispiel #20
0
        /// <summary>
        /// 序列化
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="serializer"></param>
        /// <returns></returns>
        public override IDictionary <string, object> Serialize(object obj, JavaScriptSerializer serializer)
        {
            var dictionary            = new Dictionary <string, object>();
            DEEntityInstanceBase data = (DEEntityInstanceBase)obj;

            dictionary.AddNonDefaultValue("EntityCode", data.EntityCode);
            dictionary.AddNonDefaultValue("EntityCodeName", data.EntityDefine.CodeName);
            dictionary.AddNonDefaultValue("EntityInstanceCode", data.ID);
            if (!data._notSerialize)
            {
                dictionary.AddNonDefaultValue("EntityDefine", data.EntityDefine);
            }

            dictionary.AddNonDefaultValue("EntityFieldValue", data.Fields);

            return(dictionary);
        }
Beispiel #21
0
        /// <summary>
        /// 创建一个主表加子表的实体定义的实例化数据
        /// </summary>
        /// <returns></returns>
        public static DEEntityInstanceBase CreateEntityInstance()
        {
            //创建Mock实体定义
            DynamicEntity entity = CreateEntityWithReferenceEntity();
            //Mock实体实例
            DEEntityInstanceBase instance = entity.CreateInstance();

            //集合字段类型赋值
            #region
            var children = entity.Fields.Where(p => p.FieldType == FieldTypeEnum.Collection);

            foreach (var child in children)
            {
                DEEntityInstanceBaseCollection entityItems = new DEEntityInstanceBaseCollection();

                //创建两条字表数据
                for (int i = 0; i < 2; i++)
                {
                    DEEntityInstanceBase childInstance = child.ReferenceEntity.CreateInstance();
                    childInstance.ID = Guid.NewGuid().ToString();

                    foreach (var field in childInstance.Fields)
                    {
                        childInstance.Fields.TrySetValue(field.Definition.Name, field.Definition.Name + "Value" + i);
                    }

                    entityItems.Add(childInstance);
                }

                instance.Fields.SetValue(child.Name, entityItems);
            }
            #endregion

            //普通字段赋值
            #region
            instance.Fields.ForEach(p =>
            {
                if (p.Definition.FieldType != FieldTypeEnum.Collection)
                {
                    p.StringValue = p.Definition.Name + "Value";
                }
            });
            #endregion

            return(instance);
        }
        /// <summary>
        /// 将模式对象的修改提交到数据库
        /// </summary>
        /// <param name="obj">对其进行更新的<typeparamref name="T"/>对象。</param>
        public void Update(T obj)
        {
            obj.NullCheck("obj");

            this.MergeExistsObjectInfo(obj);

            EntityInstanceUpdateActionCollection actions = GetActions("Update");

            actions.Prepare(obj);

            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                DEEntityInstanceBase existData = GetExistedObject(obj);
                string sql = string.Empty;
                if (existData != null)
                {
                    sql = EntityInstanceUpdateSqlBuilder.Instance.ToUpdateSql(obj, this.GetMappingInfo());
                    DbHelper.RunSqlReturnScalar(sql, this.GetConnectionName());
                }
                else
                {
                    sql = EntityInstanceUpdateSqlBuilder.Instance.ToInsertSql(obj, this.GetMappingInfo());
                    DbHelper.RunSqlReturnScalar(sql, this.GetConnectionName());
                }

                //执行update  如果update失败执行insert
                //string sql = EntityInstanceUpdateSqlBuilder.Instance.ToUpdateSql(obj, this.GetMappingInfo());
                //try
                //{
                //    DbHelper.RunSqlReturnScalar(sql, this.GetConnectionName());
                //    DbHelper.RunSqlReturnScalar(sql, this.GetConnectionName());
                //}
                //catch (Exception)
                //{
                //    sql = EntityInstanceUpdateSqlBuilder.Instance.ToInsertSql(obj, this.GetMappingInfo());
                //    DbHelper.RunSqlReturnScalar(sql, this.GetConnectionName());
                //}

                //SCInstanceActionContext.Current.TimePoint.IsMinValue(() => SCInstanceActionContext.Current.TimePoint = dt);
                //string sql = EntityInstanceUpdateSqlBuilder.Instance.ToInsertSql(obj, this.GetMappingInfo());

                actions.Persist(obj);

                scope.Complete();
            }
        }
        public ServerResult UpdateInstance(string jsonData)
        {
            ServerResult result = new ServerResult();

            try
            {
                //反序列化
                DEEntityInstanceBase resultInstance = JSONSerializerExecute.Deserialize <DEEntityInstanceBase>(jsonData);

                DEInstanceAdapter.Instance.Update(resultInstance);

                result.Result = string.Format("{{'ID':'{0}'}}", resultInstance.ID);
            }
            catch (Exception e)
            {
                result.IsSuccess = false;
                result.Result    = string.Format("{{'ErrorMsg':'{0}'}}", e.Message);
            }

            return(result);
        }
        private DEEntityInstanceBase GetExistedObject(T obj)
        {
            WhereSqlClauseBuilder keyBuilder = ORMapping.GetWhereSqlClauseBuilderByPrimaryKey(obj, this.GetMappingInfo());

            string sql = string.Format("SELECT TOP 1 {0} FROM {1} WHERE {2} ORDER BY CreateDate DESC",
                                       string.Join(",", ORMapping.GetSelectFieldsName(this.GetMappingInfo(), "Data")),
                                       this.GetMappingInfo().TableName,
                                       keyBuilder.ToSqlString(TSqlBuilder.Instance));

            DataTable table = DbHelper.RunSqlReturnDS(sql, this.GetConnectionName()).Tables[0];

            DEEntityInstanceBase result = null;

            if (table.Rows.Count > 0)
            {
                result = this.CreateSimpleObject(table.Rows[0]["EntityCode"].ToString());
                ORMapping.DataRowToObject(table.Rows[0], result);
            }

            return(result);
        }
Beispiel #25
0
        /// <summary>
        /// 得到强类型的值
        /// </summary>
        /// <returns></returns>
        public object GetRealValue()
        {
            object result = this.StringValue;

            if (this.Definition.FieldType == FieldTypeEnum.Collection)
            {
                if (this.StringValue.IsNotEmpty())
                {
                    DEEntityInstanceBaseCollection collection = new DEEntityInstanceBaseCollection();
                    IEnumerable <XElement>         objs       = XElement.Parse(this.StringValue).XPathSelectElements("Object");

                    objs.ForEach(p =>
                    {
                        //这里需要优化,得到一个实体的定义,应该通过缓存逻辑实现。或者在Instance中,直接保存定义信息
                        DynamicEntity entity =
                            DESchemaObjectAdapter.Instance.Load(p.AttributeValue("EntityID")) as DynamicEntity;
                        DEEntityInstanceBase item = entity.CreateInstance();

                        item.FromXElement(p);

                        collection.Add(item);
                    });

                    result = collection;
                }
            }
            else
            {
                Type realType = typeof(string);

                //author haoyk 2014-3-3
                if (this.Definition.FieldType.TryToRealType(out realType))
                {
                    result = DataConverter.ChangeType(result, realType);
                }
            }

            return(result);
        }
        /// <summary>
        /// 合并现有对象信息
        /// </summary>
        /// <param name="obj">对其进行更新的<typeparamref name="T"/>对象。</param>
        public void MergeExistsObjectInfo(T obj)
        {
            if (SCInstanceActionContext.Current.OriginalObject != null &&
                SCInstanceActionContext.Current.OriginalObject.EntityCode == obj.EntityCode &&
                SCInstanceActionContext.Current.OriginalObject.ID == obj.ID)
            {
                obj.Creator    = SCInstanceActionContext.Current.OriginalObject.Creator;
                obj.CreateDate = SCInstanceActionContext.Current.OriginalObject.CreateDate;
                //obj.VersionStartTime = SCInstanceActionContext.Current.OriginalObject.VersionStartTime;
            }
            else
            {
                DEEntityInstanceBase existedInfo = this.GetExistedObject(obj);

                if (existedInfo != null)
                {
                    obj.CreateDate = existedInfo.CreateDate;
                    obj.Creator    = existedInfo.Creator;
                    //obj.VersionStartTime = existedInfo.VersionStartTime;
                }
            }
        }
Beispiel #27
0
        protected void btnSave_Click(object sender, EventArgs e)
        {
            PropertyValueCollection propterties = new PropertyValueCollection();

            this.propertyForm.Properties.CopyTo(propterties);
            if (propterties.Count > 0)
            {
                if (!string.IsNullOrEmpty(EntityInstenceID))
                {
                    DEEntityInstanceBase entityInstence = DEInstanceAdapter.Instance.Load(EntityInstenceID);
                    entityInstence.Fields.FromPropertyValues(propterties);
                    DEInstanceAdapter.Instance.Update(entityInstence);
                }
                else
                {
                    DynamicEntity        entity   = (DynamicEntity)DESchemaObjectAdapter.Instance.Load(EntityID);
                    DEEntityInstanceBase instence = entity.CreateInstance();
                    instence.Fields.FromPropertyValues(propterties);
                    DEInstanceAdapter.Instance.Update(instence);
                }
            }
        }
Beispiel #28
0
        /// <summary>
        /// 创建带数据的实体实例
        /// </summary>
        /// <returns></returns>
        public static DEEntityInstanceBase CreateInstanceWithData()
        {
            //准备实体定义
            DynamicEntity header = MockData.CreateEntityWithReferenceEntity();

            //创建空实例
            DEEntityInstanceBase instance = header.CreateInstance();

            instance.Fields.SetValue("总金额", 200);

            DynamicEntityField field = instance.EntityDefine.Fields.FirstOrDefault(p => p.FieldType == FieldTypeEnum.Collection) as DynamicEntityField;

            DEEntityInstanceBaseCollection items = new DEEntityInstanceBaseCollection();

            #region
            //实例1
            DEEntityInstanceBase itemInstance = field.ReferenceEntity.CreateInstance();
            itemInstance.ID   = Guid.NewGuid().ToString();
            itemInstance.Name = "第一条数据";
            itemInstance.Fields.TrySetValue("物料名称", "鼠标");
            itemInstance.Fields.TrySetValue("物料数量", 1);
            itemInstance.Fields.TrySetValue("单价", 50);
            items.Add(itemInstance);

            //实例2
            DEEntityInstanceBase itemInstance1 = field.ReferenceEntity.CreateInstance();
            itemInstance1.ID   = Guid.NewGuid().ToString();
            itemInstance1.Name = "第二条数据";
            itemInstance1.Fields.TrySetValue("物料名称", "键盘");
            itemInstance1.Fields.TrySetValue("物料数量", 1);
            itemInstance1.Fields.TrySetValue("单价", 150);
            items.Add(itemInstance1);
            #endregion
            instance.Fields.SetValue("销售明细", items);

            DEInstanceAdapter.Instance.Update(instance);

            return(instance);
        }
        public ServerResult GetExistInstance(string instanceID)
        {
            ServerResult result = new ServerResult();

            try
            {
                instanceID.CheckStringIsNullOrEmpty <ArgumentNullException>("实例ID不能为空");

                //根据实例ID获取实例对象
                DEEntityInstanceBase instance = DEInstanceAdapter.Instance.Load(instanceID);

                string json = JSONSerializerExecute.Serialize(instance);

                result.Result = json;
            }
            catch (Exception e)
            {
                result.IsSuccess = false;
                result.Result    = e.Message;
            }

            return(result);
        }
Beispiel #30
0
        public void InstanceSerializeTest()
        {
            DynamicEntity entity = MockData.CreateEntityAndChildEntity();

            DEEntityInstanceBase instance = entity.CreateInstance();

            string json = JSONSerializerExecute.Serialize(instance);

            instance.Fields.ForEach(f =>
            {
                if (f.Definition.FieldType == FieldTypeEnum.Collection)
                {
                    foreach (var item in f.Definition.ReferenceEntity.Fields)
                    {
                        Assert.IsTrue(json.Contains(item.Name));
                    }
                }
                else
                {
                    Assert.IsTrue(json.Contains(f.Definition.Name));
                }
            });
        }