/// <summary> /// 根据容器ID,成员ID和时间点载入对象 /// </summary> /// <param name="containerID">容器ID</param> /// <param name="memberID">成员ID</param> /// <param name="timePoint"></param> /// <returns></returns> public SCSimpleRelationBase Load(string containerID, string memberID, DateTime timePoint) { WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("ContainerID", containerID); builder.AppendItem("MemberID", memberID); SCMemberRelationCollection relations = Load(builder, timePoint); return(relations.FirstOrDefault()); }
/// <summary> /// 根据条件和时间点载入对象 /// </summary> /// <param name="builder">包含条件的<see cref="IConnectiveSqlClause"/></param> /// <param name="timePoint"></param> /// <returns></returns> public SCMemberRelationCollection Load(IConnectiveSqlClause builder, DateTime timePoint) { var timeBuilder = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder(timePoint); ConnectiveSqlClauseCollection connectiveBuilder = new ConnectiveSqlClauseCollection(builder, timeBuilder); SCMemberRelationCollection result = null; VersionedObjectAdapterHelper.Instance.FillData(GetMappingInfo().TableName, connectiveBuilder, this.GetConnectionName(), view => { result = new SCMemberRelationCollection(); result.LoadFromDataView(view); }); return(result); }
/// <summary> /// 获取指定关系中的成员对象 /// </summary> /// <param name="acls">关系</param> /// <returns></returns> private SchemaObjectCollection GetMemberObjects(SCMemberRelationCollection relations) { var memberId = (from p in relations where p.Status == SchemaObjectStatus.Normal select p.ID).ToArray(); if (memberId.Length > 0) { InSqlClauseBuilder inSql = new InSqlClauseBuilder("ID"); inSql.AppendItem(memberId); WhereSqlClauseBuilder where = new WhereSqlClauseBuilder(); where.AppendItem("Status", (int)SchemaObjectStatus.Normal); return(PC.Adapters.SchemaObjectAdapter.Instance.Load(new ConnectiveSqlClauseCollection(inSql, where, VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder()))); } else { return(new SchemaObjectCollection()); } }
/// <summary> /// 获取指定关系中的成员对象 /// </summary> /// <param name="acls">关系</param> /// <returns></returns> private SchemaObjectCollection GetMemberObjects(SCMemberRelationCollection relations) { var memberId = (from p in relations where p.Status == SchemaObjectStatus.Normal select p.ID).ToArray(); if (memberId.Length > 0) { InSqlClauseBuilder inSql = new InSqlClauseBuilder("ID"); inSql.AppendItem(memberId); WhereSqlClauseBuilder where = new WhereSqlClauseBuilder(); where.AppendItem("Status", (int)SchemaObjectStatus.Normal); return PC.Adapters.SchemaObjectAdapter.Instance.Load(new ConnectiveSqlClauseCollection(inSql, where, VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder())); } else { return new SchemaObjectCollection(); } }
public void Load(System.IO.TextReader input) { int count; var xmlDoc = new System.Xml.XmlDocument(); xmlDoc.Load(input); SchemaObjectXmlImporter importer = new SchemaObjectXmlImporter(); var nodeContext = xmlDoc.SelectSingleNode("/sc/context"); if (nodeContext != null) { var attrTime = nodeContext.Attributes["timeContext"]; if (attrTime != null && attrTime.Specified) { this.timeContext = System.Xml.XmlConvert.ToDateTime(attrTime.Value, System.Xml.XmlDateTimeSerializationMode.Local); } var scope = nodeContext.Attributes["scope"]; if (scope != null && scope.Specified) { this.Scope = scope.Value; } } var nodeObjects = xmlDoc.SelectNodes("/sc/objects/Object"); this.objects = null; count = nodeObjects.Count; if (count > 0) { this.objects = new SchemaObjectCollection(); for (int i = 0; i < count; i++) { var xml = nodeObjects[i].OuterXml; var schemaType = nodeObjects[i].Attributes["SchemaType"].Value; this.objects.Add(importer.XmlToObject(xml, schemaType)); } } nodeObjects = xmlDoc.SelectNodes("/sc/relations/Object"); this.relations = null; count = nodeObjects.Count; if (count > 0) { this.relations = new SCRelationObjectCollection(); for (int i = 0; i < count; i++) { var xml = nodeObjects[i].OuterXml; var schemaType = nodeObjects[i].Attributes["SchemaType"].Value; this.relations.Add((SCRelationObject)importer.XmlToObject(xml, schemaType)); } } nodeObjects = xmlDoc.SelectNodes("/sc/membership/Object"); this.membership = null; count = nodeObjects.Count; if (count > 0) { this.membership = new SCMemberRelationCollection(); for (int i = 0; i < count; i++) { var xml = nodeObjects[i].OuterXml; var schemaType = nodeObjects[i].Attributes["SchemaType"].Value; this.membership.Add((SCSimpleRelationBase)importer.XmlToObject(xml, schemaType)); } } nodeObjects = xmlDoc.SelectNodes("/sc/conditions/condition"); this.conditions = null; count = nodeObjects.Count; if (count > 0) { this.conditions = new MCS.Library.SOA.DataObjects.Security.Conditions.SCConditionCollection(); for (int i = 0; i < count; i++) { var xml = nodeObjects[i]; var condition = LoadCondition(xml); this.conditions.Add(condition); } } nodeObjects = xmlDoc.SelectNodes("/sc/acls/acl"); this.acls = null; count = nodeObjects.Count; if (count > 0) { this.acls = new SCAclContainerCollection(); for (int i = 0; i < count; i++) { var xml = nodeObjects[i]; var acl = LoadAcl(xml); this.acls.Add(acl); } } }