private PrincipalSearchResult <Principal> FindAll(bool returnOne)
        {
            GlobalDebug.WriteLineIf(GlobalDebug.Info, "PrincipalSearcher", "Entering FindAll, returnOne=" + returnOne.ToString());

            if (_qbeFilter == null)
            {
                throw new InvalidOperationException(StringResources.PrincipalSearcherMustSetFilter);
            }
            // Double-check that the Principal isn't persisted.  We don't allow them to assign a persisted
            // Principal as the filter, but they could have persisted it after assigning it to the QueryFilter
            // property.
            if (!_qbeFilter.unpersisted)
            {
                throw new InvalidOperationException(StringResources.PrincipalSearcherPersistedPrincipal);
            }

            // Validate the QBE filter: make sure it doesn't have any non-scalar properties set.
            if (HasReferentialPropertiesSet())
            {
                throw new InvalidOperationException(StringResources.PrincipalSearcherNonReferentialProps);
            }

            GlobalDebug.WriteLineIf(GlobalDebug.Info, "PrincipalSearcher", "FindAll: qbeFilter is non-null and passes");

            ResultSet resultSet = _ctx.QueryCtx.Query(this, returnOne ? 1 : -1);

            PrincipalSearchResult <Principal> fr = new PrincipalSearchResult <Principal>(resultSet);

            return(fr);
        }
Exemple #2
0
        public Principal FindOne()
        {
            Principal current;

            this.CheckDisposed();
            PrincipalSearchResult <Principal> principals = this.FindAll(true);

            using (principals)
            {
                FindResultEnumerator <Principal> enumerator = (FindResultEnumerator <Principal>)principals.GetEnumerator();
                if (!enumerator.MoveNext())
                {
                    current = null;
                }
                else
                {
                    current = enumerator.Current;
                }
            }
            return(current);
        }
Exemple #3
0
        private PrincipalSearchResult <Principal> FindAll(bool returnOne)
        {
            int num;

            if (this.qbeFilter != null)
            {
                if (this.qbeFilter.unpersisted)
                {
                    if (!this.HasReferentialPropertiesSet())
                    {
                        StoreCtx          queryCtx          = this.ctx.QueryCtx;
                        PrincipalSearcher principalSearcher = this;
                        if (returnOne)
                        {
                            num = 1;
                        }
                        else
                        {
                            num = -1;
                        }
                        ResultSet resultSet = queryCtx.Query(principalSearcher, num);
                        PrincipalSearchResult <Principal> principals = new PrincipalSearchResult <Principal>(resultSet);
                        return(principals);
                    }
                    else
                    {
                        throw new InvalidOperationException(StringResources.PrincipalSearcherNonReferentialProps);
                    }
                }
                else
                {
                    throw new InvalidOperationException(StringResources.PrincipalSearcherPersistedPrincipal);
                }
            }
            else
            {
                throw new InvalidOperationException(StringResources.PrincipalSearcherMustSetFilter);
            }
        }
        public Principal FindOne()
        {
            GlobalDebug.WriteLineIf(GlobalDebug.Info, "PrincipalSearcher", "Entering FindOne()");

            CheckDisposed();

            using (PrincipalSearchResult <Principal> fr = FindAll(true))
            {
                FindResultEnumerator <Principal> fre = (FindResultEnumerator <Principal>)fr.GetEnumerator();

                // If there's (at least) one result, return it.  Else return null.
                if (fre.MoveNext())
                {
                    GlobalDebug.WriteLineIf(GlobalDebug.Info, "PrincipalSearcher", "FindOne(): found a principal");
                    return((Principal)fre.Current);
                }
                else
                {
                    GlobalDebug.WriteLineIf(GlobalDebug.Info, "PrincipalSearcher", "FindOne(): found no principal");
                    return(null);
                }
            }
        }