コード例 #1
0
        private Criteria CreateCriteriaForRelationship(MemberInfo memberInfo, Criteria.ComparisonOp comparisonOp, object finalValue)
        {
            var      relationshipName = memberInfo.Name;
            var      classDef         = ClassDefCol.GetColClassDef()[memberInfo.DeclaringType];
            var      relationshipDef  = classDef.GetRelationship(relationshipName);
            var      relatedObject    = finalValue as IBusinessObject;
            Criteria criteria         = null;
            var      logicalOp        = comparisonOp == Criteria.ComparisonOp.Equals
                        ? Criteria.LogicalOp.And
                        : Criteria.LogicalOp.Or;

            foreach (var relPropDef in relationshipDef.RelKeyDef)
            {
                var propertyCriteria = new Criteria(
                    relationshipName + "." + relPropDef.OwnerPropertyName,
                    comparisonOp,
                    relatedObject.GetPropertyValue(relPropDef.RelatedClassPropName)
                    );

                if (criteria == null)
                {
                    criteria = propertyCriteria;
                }
                else
                {
                    criteria = new Criteria(criteria, logicalOp, propertyCriteria);
                }
            }
            return(criteria);
        }
コード例 #2
0
ファイル: ClassDefCol.cs プロジェクト: SaberZA/habanero
 /// <summary>
 /// Returns the existing collection, or creates and returns a
 /// new empty collection.
 /// </summary>
 /// <param name="classDefCol">A loaded collection of class definitions to initialise the collection with</param>
 /// <returns>A collection of class definitions</returns>
 public static ClassDefCol LoadColClassDef(ClassDefCol classDefCol)
 {
     if (classDefCol == null)
     {
         throw new HabaneroArgumentException("classDefCol", "Cannot load a ClassDefCol if it is null.");
     }
     if (!_instanceFlag || _classDefcol.Count == 0)
     {
         _classDefcol  = classDefCol;
         _instanceFlag = true;
     }
     else
     {
         foreach (IClassDef classDef in classDefCol)
         {
             //ClassDef classDef = (ClassDef)entry.Value;
             if (!_classDefcol.Contains(classDef))
             {
                 _classDefcol.Add(classDef);
             }
         }
     }
     return(_classDefcol);
 }