/// <summary> /// 使用指定的容器对象和成员对象 初始化<see cref="DEMemberRelation"/>的新实例 /// </summary> /// <param name="container">容器对象</param> /// <param name="member">成员对象</param> public DEMemberRelation(DESchemaObjectBase container, DESchemaObjectBase member, DEStandardObjectSchemaType relationType) : base(container, member, relationType.ToString()) { }
public void RelationAction( DEBase container, DESchemaObjectCollection members, DEMemberRelationCollection relation, bool saveTargetData, bool saveMemberData, DEStandardObjectSchemaType type ) { //取出旧的关系集合 var oldRelation = DEMemberRelationAdapter.Instance.LoadByContainerID(container.ID, type.ToString()); //所有旧成员集合 var oldMemberIDs = oldRelation.Select(p => p.ID).ToList(); var newMemberIDs = members.Select(m => m.ID).ToList(); List <string> needDelIDs = new List <string>(); foreach (var id in oldMemberIDs) { if (!newMemberIDs.Contains(id)) { needDelIDs.Add(id); } } //删除关系 oldRelation.ForEach(p => { if (needDelIDs.Contains(p.ID)) { DEMemberRelationAdapter.Instance.UpdateStatus(p, SchemaObjectStatus.DeletedByContainer); } }); if (saveTargetData) { //容器入库 DESchemaObjectAdapter.Instance.Update(container); } if (saveMemberData) { //删除成员 needDelIDs.ForEach(id => DESchemaObjectAdapter.Instance.UpdateStatus(DESchemaObjectAdapter.Instance.Load(id), SchemaObjectStatus.Deleted)); //新成员入库 members.ForEach(p => DESchemaObjectAdapter.Instance.Update(p)); } //新关系入库 relation.ForEach(p => DEMemberRelationAdapter.Instance.Update(p)); }