Beispiel #1
0
        //创建测试数据
        private static DynamicEntity CreateDemoHeader()
        {
            //添加实体定义
            DynamicEntity saleOrderHeaderDefine = new DynamicEntity();

            saleOrderHeaderDefine.ID          = Guid.NewGuid().ToString();
            saleOrderHeaderDefine.Name        = "销售单";
            saleOrderHeaderDefine.Description = "销售单";
            saleOrderHeaderDefine.CategoryID  = Define.TestCategoryID;  //集团公司/管道板块/运输

            //SaleOrderHeader.SortNo = 0;
            saleOrderHeaderDefine.BuidCodeName();

            saleOrderHeaderDefine.Fields.Add(new DynamicEntityField()
            {
                ID = Guid.NewGuid().ToString(), Name = "总金额", FieldType = FieldTypeEnum.Decimal, Length = 18, SortNo = 0, DefaultValue = "99"
            });

            DynamicEntityField field = new DynamicEntityField()
            {
                ID = Guid.NewGuid().ToString(),
                //CodeName = "销售明细",
                Name      = "销售明细",
                FieldType = FieldTypeEnum.Collection,
                Length    = 999,
                SortNo    = 1
            };

            field.ReferenceEntityCodeName = "/集团公司/管道板块/运输/销售单明细";
            saleOrderHeaderDefine.Fields.Add(field);

            DEObjectOperations.InstanceWithoutPermissions.AddEntity(saleOrderHeaderDefine);

            #region Mapping关系
            //抬头对应
            EntityMapping mapping = new EntityMapping();
            mapping.InnerEntity     = saleOrderHeaderDefine;
            mapping.OuterEntityID   = Guid.NewGuid().ToString();
            mapping.OuterEntityName = "Tcode_test";
            mapping.EntityFieldMappingCollection.ToArray();

            //saleOrderHeaderDefine.Fields.ToArray().Where(p => p.FieldType != FieldTypeEnum.Collection).ToList().ForEach(f =>
            //{
            //    var outerField = mapping.EntityFieldMappingCollection.FirstOrDefault(p => p.FieldName.Equals(f.Name));
            //    outerField.OuterFieldID = Guid.NewGuid().ToString();
            //    outerField.OuterFieldName = f.Name + "_Mapping";
            //});

            //var collfield = mapping.EntityFieldMappingCollection.FirstOrDefault(p => p.FieldTypeName == FieldTypeEnum.Collection.ToString());
            //collfield.OuterFieldID = Guid.NewGuid().ToString();
            //collfield.OuterFieldName = "Tcode_test_Item";

            DEObjectOperations.InstanceWithoutPermissions.AddEntityMapping(mapping);
            #endregion

            return(saleOrderHeaderDefine);
        }
Beispiel #2
0
        /// <summary>
        /// 更新实体属性
        /// </summary>
        /// <param name="entityField"></param>
        public void UpdateEntityField(DynamicEntityField entityField)
        {
            DEObjectExecutor executor = null;

            if (this._NeedCheckPermissions)
            {
                CheckPermissions(DEOperationType.UpdateEntityField, null, "UpdateEntityField", string.Empty);
            }

            executor = new DEObjectExecutor(DEOperationType.UpdateEntityField, entityField);
            ExecuteWithActions(DEOperationType.UpdateEntityField, () => SCActionContext.Current.DoActions(() => executor.Execute()));
        }
Beispiel #3
0
        /// <summary>
        /// 删除实体属性
        /// </summary>
        /// <param name="entityField"></param>
        public void DeleteEntityField(DynamicEntityField entityField)
        {
            entityField.Status = SchemaObjectStatus.Deleted;
            DEObjectExecutor executor = null;

            if (this._NeedCheckPermissions)
            {
                CheckPermissions(DEOperationType.DeleteEntityField, null, "DeleteEntityField", string.Empty);
            }

            executor = new DEObjectExecutor(DEOperationType.DeleteEntityField, entityField);
            ExecuteWithActions(DEOperationType.DeleteEntityField, () => SCActionContext.Current.DoActions(() => executor.Execute()));
        }
Beispiel #4
0
        public void CreateObjectWithSortNo()
        {
            try
            {
                DynamicEntityField entity = SchemaExtensions.CreateObject("DynamicEntityField") as DynamicEntityField;

                Assert.AreEqual(0, entity.SortNo);
            }
            catch (Exception)
            {
                throw;
            }
        }
Beispiel #5
0
        /// <summary>
        /// 创建实体字段
        /// </summary>
        /// <returns></returns>
        private DynamicEntityField creatEntityField(int sortNo, string flag = "new")
        {
            var field = new DynamicEntityField()
            {
                ID           = Guid.NewGuid().ToString(),
                Name         = string.Format("字段{0}", sortNo),
                Description  = "描述" + flag,
                Length       = 2,
                DefaultValue = "默认值",
                FieldType    = FieldTypeEnum.Decimal,
                Creator      = (IUser)OguBase.CreateWrapperObject(new OguUser("22c3b351-a713-49f2-8f06-6b888a280fff")),//wangli5
                SortNo       = sortNo
            };

            return(field);
        }
        /// <summary>
        /// 创建实体字段
        /// </summary>
        /// <returns></returns>
        private static DynamicEntityField CreateEntityField(string flag = "new")
        {
            var field = new DynamicEntityField()
            {
                ID           = Guid.NewGuid().ToString(),
                Name         = "字段",
                Description  = "描述" + flag,
                Length       = 2,
                DefaultValue = "默认值",
                FieldType    = FieldTypeEnum.Decimal,
                //CodeName = "Field",
                Creator = (IUser)OguBase.CreateWrapperObject(new OguUser("22c3b351-a713-49f2-8f06-6b888a280fff")),//wangli5
                SortNo  = 0
            };

            return(field);
        }
Beispiel #7
0
        public void EntityAndChildDeSerializeTest()
        {
            DynamicEntity entity = MockData.CreateEntityAndChildEntity();

            string        json            = JSONSerializerExecute.Serialize(entity);
            DynamicEntity deDynamicEntity = JSONSerializerExecute.Deserialize <DynamicEntity>(json);

            Assert.AreEqual(entity.CodeName, deDynamicEntity.CodeName);
            Assert.AreEqual(entity.Fields.Count, deDynamicEntity.Fields.Count);

            IEnumerable <DynamicEntityField> sourceFields = entity.Fields.Where(p => p.FieldType == FieldTypeEnum.Collection);

            sourceFields.ForEach(sf =>
            {
                DynamicEntityField def = deDynamicEntity.Fields[sf.ID];

                Assert.AreEqual(FieldTypeEnum.Collection, def.FieldType);
                Assert.AreEqual(sf.CodeName, def.CodeName);
            });
        }
Beispiel #8
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);
        }
Beispiel #9
0
        public EntityFieldValue(DynamicEntityField def)
        {
            ExceptionHelper.FalseThrow <ArgumentNullException>(def != null, "def");

            this._Definition = def;
        }