public BaseCriteria IsNull()
 {
     return(Criteria.IsNull());
 }
        private object GetExistingID(IDbConnection connection, RelationInfo info,
            object thisKey)
        {
            var criteria = new Criteria(info.OtherKeyField.PropertyName ?? info.OtherKeyField.Name) ==
                new ValueCriteria(thisKey);

            if (!ReferenceEquals(null, info.FilterField))
            {
                var flt = new Criteria(info.FilterField.PropertyName ?? info.FilterField.Name);
                if (info.FilterValue == null)
                    criteria &= flt.IsNull();
                else
                    criteria &= flt == new ValueCriteria(info.FilterValue);
            }

            var existing = info.ListHandlerFactory().Process(connection, new ListRequest
            {
                ColumnSelection = ColumnSelection.KeyOnly,
                Criteria = criteria
            }).Entities;

            if (existing.Count > 1)
                throw new Exception(String.Format("Found multiple extension rows for UpdatableExtension '{0}'", 
                    info.Attr.Alias));

            if (existing.Count == 0)
                return null;

            return ((Field)((IIdRow)existing[0]).IdField).AsObject((Row)existing[0]);
        }