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失败"); }
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删除失败"); }
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", "实体字段外部实体字段复制失败"); }