public static QLPart GetPropertyValue(this QLEntity entity, string propertyName) { //if (_lastProperty == propertyName && _lastClassName == entity.ClassName && _lastIndex != -1) // return _lastIsDirect ? entity.QLDirectList[_lastIndex] : entity.QlInverseList[_lastIndex]; var _lastIndex1 = Repository.DirectPropertyIndex(entity.ClassName, propertyName); if (_lastIndex1 != -1) { _lastClassName = entity.ClassName; _lastProperty = propertyName; _lastIsDirect = true; return(entity.QLDirectList[_lastIndex1]); } var _lastIndex2 = Repository.InversePropertyIndex(entity.ClassName, propertyName); if (_lastIndex2 != -1) { _lastClassName = entity.ClassName; _lastProperty = propertyName; _lastIsDirect = false; return(entity.QlInverseList[_lastIndex2]); } return(null); }
public void SetInversePropertyVal(QLEntity entity, string propertyName, QLEntityId qlEntityId, bool deleteOld) { var index = repository.InversePropertyIndex(entity.ClassName, propertyName); var part = entity.QlInverseList.List[index]; if (deleteOld || (part.QLEntityId == null && part.QLList == null)) { entity.QlInverseList.List[index] = new QLPart() { QLEntityId = qlEntityId } } ; else { if (part.QLEntityId != null) { var list = new QLList(); list.Add(new QLPart() { QLEntityId = part.QLEntityId }); list.Add(new QLPart() { QLEntityId = qlEntityId }); part.QLEntityId = null; part.QLList = list; } else { part.QLList.Add(new QLPart() { QLEntityId = qlEntityId }); } } }