Esempio n. 1
0
        private IQueryable ResolveEntityJoinReferencedPersister(FromReferenceNode path)
        {
            string entityName = path.Path;

            var persister = SessionFactoryHelper.FindQueryableUsingImports(entityName);

            if (persister == null && entityName != null)
            {
                var implementors = SessionFactoryHelper.Factory.GetImplementors(entityName);
                //Possible case - join on interface
                if (implementors.Length == 1)
                {
                    persister = (IQueryable)SessionFactoryHelper.Factory.TryGetEntityPersister(implementors[0]);
                }
            }

            if (persister != null)
            {
                return(persister);
            }

            if (path.Type == IDENT)
            {
                throw new QuerySyntaxException(entityName + " is not mapped");
            }

            //Keep old exception for DOT node
            throw new InvalidPathException("Invalid join: " + entityName);
        }
Esempio n. 2
0
        private IQueryable ObtainQueryable(ICriteriaQuery criteriaQuery)
        {
            IQueryable queryable = criteriaQuery.Factory.GetEntityPersister(_entityClass.FullName) as IQueryable;

            if (queryable == null)
            {
                queryable = SessionFactoryHelper.FindQueryableUsingImports(
                    criteriaQuery.Factory, _entityClass.FullName);
            }

            return(queryable);
        }
Esempio n. 3
0
 private IQueryable ResolveEntityJoinReferencedPersister(IASTNode path)
 {
     if (path.Type == IDENT)
     {
         var pathIdentNode = (IdentNode)path;
         return(SessionFactoryHelper.FindQueryableUsingImports(pathIdentNode.Path));
     }
     else if (path.Type == DOT)
     {
         var pathText = ASTUtil.GetPathText(path);
         return(SessionFactoryHelper.FindQueryableUsingImports(pathText));
     }
     return(null);
 }
Esempio n. 4
0
 private IQueryable ResolveEntityJoinReferencedPersister(IASTNode path)
 {
     if (path.Type == IDENT)
     {
         var pathIdentNode = (IdentNode)path;
         // Since IDENT node is not expected for implicit join path, we can throw on not found persister
         return((IQueryable)SessionFactoryHelper.RequireClassPersister(pathIdentNode.Path));
     }
     else if (path.Type == DOT)
     {
         var pathText = ASTUtil.GetPathText(path);
         return(SessionFactoryHelper.FindQueryableUsingImports(pathText));
     }
     return(null);
 }
        /// <summary>
        /// Get the a typed value for the given property value.
        /// </summary>
        public TypedValue GetTypedValue(ICriteria subcriteria, string propertyName, object value)
        {
            // Detect discriminator values...
            var entityClass = value as System.Type;

            if (entityClass != null)
            {
                NHibernate_Persister_Entity.IQueryable q = helper.FindQueryableUsingImports(entityClass.FullName);

                if (q != null && q.DiscriminatorValue != null)
                {
                    // NH Different implementation : We are using strongly typed parameter for SQL query (see DiscriminatorValue comment)
                    return(new TypedValue(q.DiscriminatorType, q.DiscriminatorValue, EntityMode.Poco));
                }
            }
            // Otherwise, this is an ordinary value.
            return(new TypedValue(GetTypeUsingProjection(subcriteria, propertyName), value, EntityMode.Poco));
        }