public int Compare(SoodaObject dbo1, SoodaObject dbo2)
        {
            _context1.SetRootObject(dbo1);
            _context2.SetRootObject(dbo2);

            foreach (ExpressionCompareInfo eci in expressions)
            {
                object v1 = eci.Expression.Evaluate(_context1);
                object v2 = eci.Expression.Evaluate(_context2);

                int result = DoCompare(v1, v2);
                if (result != 0)
                {
                    if (eci.SortOrder == SortOrder.Ascending)
                    {
                        return(result);
                    }
                    else
                    {
                        return(-result);
                    }
                }
            }

            return(PrimaryKeyCompare(dbo1, dbo2));
        }