Exemplo n.º 1
0
        public void TestDeleteEntityAndMapping()
        {
            var entity = creatEntity();

            //添加实体
            DEObjectOperations.InstanceWithoutPermissions.AddEntity(entity);
            //获取实体
            var entityLoad = DESchemaObjectAdapter.Instance.Load(entity.ID) as DynamicEntity;

            //外部实体
            var newOutEntity = createOuterEntity();

            List <EntityFieldMapping> entityFieldMappingCollection = new List <EntityFieldMapping>();

            List <string> outerFieldIDs = new List <string>();

            //新建外部属性
            entity.Fields.ForEach(f =>
            {
                var guid = Guid.NewGuid().ToString();
                EntityFieldMapping mapping = new EntityFieldMapping();
                mapping.BuildFromField(f);
                //mapping.OuterFieldID = guid;
                //mapping.OuterFieldName = "Name_" + f.Name;
                outerFieldIDs.Add(guid);
                entityFieldMappingCollection.Add(mapping);
            });

            //mapping对象
            EntityMapping entityMapping = new EntityMapping()
            {
                InnerEntity     = entityLoad,
                OuterEntityID   = newOutEntity.ID,
                OuterEntityName = newOutEntity.Name,
                EntityFieldMappingCollection = entityFieldMappingCollection
            };

            //mapping入库
            DEObjectOperations.InstanceWithoutPermissions.AddEntityMapping(entityMapping);

            //删除实体
            DEObjectOperations.InstanceWithoutPermissions.DeleteEntity(entity.ID);

            //实体
            var resultEntity = DESchemaObjectAdapter.Instance.Load(entity.ID, false) as DynamicEntity;

            //外部实体
            var resultOEntity = DESchemaObjectAdapter.Instance.Load(newOutEntity.ID, false) as OuterEntity;

            bool entitySuccess = resultEntity.Status == SchemaObjectStatus.Deleted;

            bool oEntitySuccess = resultOEntity.Status == SchemaObjectStatus.Deleted;

            Assert.IsTrue(entitySuccess && oEntitySuccess, "删除mapping失败");
        }
Exemplo n.º 2
0
        public void TestDeleteEntityMapping()
        {
            var entity = creatEntity();

            //添加实体
            DEObjectOperations.InstanceWithoutPermissions.AddEntity(entity);
            //获取实体
            var entityLoad = DESchemaObjectAdapter.Instance.Load(entity.ID) as DynamicEntity;

            //外部实体
            var newOutEntity = createOuterEntity();

            List <EntityFieldMapping> entityFieldMappingCollection = new List <EntityFieldMapping>();

            List <string> outerFieldIDs = new List <string>();

            //新建外部属性
            entity.Fields.ForEach(f =>
            {
                var guid = Guid.NewGuid().ToString();
                EntityFieldMapping mapping = new EntityFieldMapping();
                mapping.BuildFromField(f);
                //mapping.OuterFieldID = guid;
                //mapping.OuterFieldName = "Name_" + f.Name;
                outerFieldIDs.Add(guid);
                entityFieldMappingCollection.Add(mapping);
            });

            //mapping对象
            EntityMapping entityMapping = new EntityMapping()
            {
                InnerEntity     = entityLoad,
                OuterEntityID   = newOutEntity.ID,
                OuterEntityName = newOutEntity.Name,
                EntityFieldMappingCollection = entityFieldMappingCollection
            };

            //mapping入库
            DEObjectOperations.InstanceWithoutPermissions.AddEntityMapping(entityMapping);
            //实体
            var resultEntity = DESchemaObjectAdapter.Instance.Load(entity.ID) as DynamicEntity;
            //外部实体
            var resultOEntity = DESchemaObjectAdapter.Instance.Load(newOutEntity.ID) as OuterEntity;

            //删除mapping
            DEObjectOperations.InstanceWithoutPermissions.DeleteEntityMapping(resultEntity, resultOEntity);



            //实体
            var resultEntityL = DESchemaObjectAdapter.Instance.Load(entity.ID, false) as DynamicEntity;

            //外部实体
            var resultOEntityL = DESchemaObjectAdapter.Instance.Load(newOutEntity.ID, false) as OuterEntity;

            //实体与外部结构的mapping是否删除
            bool entityMappingSuccess = true;// !(resultEntityL.OuterEntities.Any(e => e.ID == resultOEntity.ID));
            //外部实体是否删除
            bool outerEntitySuccess = resultOEntityL.Status == DataObjects.Schemas.SchemaProperties.SchemaObjectStatus.Deleted;
            //实体字段mapping是否删除
            bool fieldMapping = true;

            foreach (var f in resultEntityL.Fields)
            {
                fieldMapping = !f.AllMemberOfRelations.Any(r =>
                                                           outerFieldIDs.Contains(r.ID)
                                                           );
                if (!fieldMapping)
                {
                    break;
                }
            }

            bool outerFieldSuccess = true;

            foreach (var fID in outerFieldIDs)
            {
                var fObj = DESchemaObjectAdapter.Instance.Load(fID, false) as OuterEntityField;
                if (fObj != null)
                {
                    outerFieldSuccess = fObj.Status == SchemaObjectStatus.Deleted;
                }
                if (!outerFieldSuccess)
                {
                    break;
                }
            }

            Assert.IsTrue(entityMappingSuccess && outerEntitySuccess && fieldMapping && outerFieldSuccess, "mapping删除失败");
        }
Exemplo n.º 3
0
        public void CopyEntityWithOutEntityMethodTest()
        {
            // /集团公司/管道板块/运输
            string categoryID = "48BE753C-630D-42F4-A02D-D2B50818F817";
            // /集团公司/销售板块/销售订单
            string terminalCategoryID = "EBABB15A-AFD8-4072-A5C9-03F1B0B5CDFF";

            var entity      = creatEntity(categoryID);
            var childEntity = creatChildEntity(categoryID);
            //外部实体字段
            OuterEntityField outField = new OuterEntityField()
            {
                Name        = "OutField",
                ID          = Guid.NewGuid().ToString(),
                Description = "外部字段"
            };
            //外部实体
            OuterEntity outEntity = new OuterEntity()
            {
                ID          = Guid.NewGuid().ToString(),
                Name        = "OEntity",
                Description = "外部实体"
            };


            //子表入库
            DEObjectOperations.InstanceWithoutPermissions.AddEntity(childEntity);
            //子表CodeName
            string childCodeName = childEntity.CodeName;
            //主表字段跟子表关联
            var field = entity.Fields[0];

            field.FieldType = FieldTypeEnum.Collection;
            field.ReferenceEntityCodeName = childCodeName;
            // field.OuterEntityFields.Add(outField);
            //主表入库
            DEObjectOperations.InstanceWithoutPermissions.AddEntity(entity);

            //实体字段与外部实体字段的Mapping
            EntityFieldMapping fieldMapping = new EntityFieldMapping()
            {
                FieldID           = field.ID,
                FieldDefaultValue = field.DefaultValue,
                FieldDesc         = field.Description,
                FieldLength       = field.Length,
                FieldName         = field.Name,
                FieldTypeName     = field.FieldType.ToString(),
                //OuterFieldID = outField.ID,
                //OuterFieldName = outField.Name,
                SortNo = field.SortNo
            };
            List <EntityFieldMapping> entityFieldMappingCollection = new List <EntityFieldMapping>();

            entityFieldMappingCollection.Add(fieldMapping);
            //实体和外部实体的Mapping
            EntityMapping mapping = new EntityMapping()
            {
                InnerEntity                  = entity,
                OuterEntityID                = outEntity.ID,
                OuterEntityName              = outEntity.Name,
                OuterEntityInType            = Contract.InType.StandardInterface,
                EntityFieldMappingCollection = entityFieldMappingCollection
            };

            DEObjectOperations.InstanceWithoutPermissions.AddEntityMapping(mapping);

            List <string> entitiesIDs = new List <string>();

            entitiesIDs.Add(entity.ID);
            entitiesIDs.Add(childEntity.ID);
            List <string> categoriesIDs = new List <string>();

            categoriesIDs.Add(terminalCategoryID);
            DEObjectOperations.InstanceWithoutPermissions.CopyEntities(entitiesIDs, categoriesIDs);

            DynamicEntity copyEntity      = DEDynamicEntityAdapter.Instance.LoadByCodeName("/集团公司/销售板块/销售订单/" + entity.Name) as DynamicEntity;
            DynamicEntity copyChildEntity = DEDynamicEntityAdapter.Instance.LoadByCodeName("/集团公司/销售板块/销售订单/" + childEntity.Name) as DynamicEntity;

            Assert.IsNotNull(copyEntity, string.Format("实体[/集团公司/销售板块/销售订单/{0}]复制失败", entity.Name));
            Assert.IsNotNull(copyChildEntity, string.Format("子实体[/集团公司/销售板块/销售订单/{0}]复制失败", childEntity.Name));
            Assert.AreEqual(copyEntity.Fields[0].FieldType, FieldTypeEnum.Collection, string.Format("实体[/集团公司/销售板块/销售订单/{0}]的字段复制失败", entity.Name));
            Assert.AreEqual(copyEntity.Fields[0].ReferenceEntityCodeName, copyChildEntity.CodeName, string.Format("实体[/集团公司/销售板块/销售订单/{0}]的字段复制失败", entity.Name));
            //Assert.AreEqual(copyEntity.OuterEntities.Count, entity.OuterEntities.Count, "实体字段外部实体复制失败");
            //Assert.AreEqual(copyEntity.OuterEntities[0].Name, entity.OuterEntities[0].Name, "实体字段外部实体复制失败");
            //Assert.AreEqual(copyEntity.Fields[0].OuterEntityFields.Count, 1, "实体字段外部实体字段复制失败");
            //Assert.AreEqual(copyEntity.Fields[0].OuterEntityFields.Count, entity.Fields[0].OuterEntityFields.Count, "实体字段外部实体字段复制失败");
            //Assert.AreEqual(copyEntity.Fields[0].OuterEntityFields[0].Name, "OutField", "实体字段外部实体字段复制失败");
        }