public IEntityPersister FindEntityPersisterUsingImports(string className)
        {
            // NH : short cut
            if (string.IsNullOrEmpty(className))
            {
                return(null);
            }

            if (!char.IsLetter(className[0]) && !className[0].Equals('_'))
            {
                return(null);
            }

            // NH : this method prevent unrecognized class when entityName != class.FullName
            // this is a patch for the TODO below
            var possibleResult = sfi.TryGetEntityPersister(GetEntityName(className));

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

            string importedClassName = sfi.GetImportedClassName(className);

            if (importedClassName == null)
            {
                return(null);
            }
            // NH: This method don't work if entityName != class.FullName
            return(sfi.TryGetEntityPersister(GetEntityName(importedClassName)));
        }
		public static System.Type GetImportedClass(ISessionFactoryImplementor sfi, string className)
		{
			string importedName = sfi.GetImportedClassName(className);

			if (importedName == null)
			{
				return null;
			}

			return System.Type.GetType(importedName, false);
		}
		public static IQueryable FindQueryableUsingImports(ISessionFactoryImplementor sfi, string className)
		{
			string importedClassName = sfi.GetImportedClassName(className);

			if (importedClassName == null)
			{
				return null;
			}

			return (IQueryable) sfi.GetEntityPersister(importedClassName, false);
		}
        internal static object GetConstantValue(string qualifiedName, ISessionFactoryImplementor sfi)
        {
            string className = StringHelper.Qualifier(qualifiedName);

            if (!string.IsNullOrEmpty(className))
            {
                System.Type t = System.Type.GetType(className);

                if (t == null && sfi != null)
                {
                    t = System.Type.GetType(sfi.GetImportedClassName(className));
                }

                if (t != null)
                {
                    return(GetConstantValue(t, StringHelper.Unqualify(qualifiedName)));
                }
            }

            return(null);
        }
 /// <summary>
 /// Given a (potentially unqualified) class name, locate its imported qualified name.
 /// </summary>
 /// <param name="className">The potentially unqualified class name</param>
 /// <returns>The qualified class name.</returns>
 public string GetImportedClassName(string className)
 {
     return(_sfi.GetImportedClassName(className));
 }
		/// <summary>
		/// Gets the Type for the name that might be an Imported Class.
		/// </summary>
		/// <param name="name">The name that might be an ImportedClass.</param>
		/// <param name="factory">The <see cref="ISessionFactoryImplementor"/> that contains the Imported Classes.</param>
		/// <returns>A <see cref="System.Type"/> if <c>name</c> is an Imported Class, <c>null</c> otherwise.</returns>
		private static System.Type GetImportedClass( string name, ISessionFactoryImplementor factory )
		{
			string importedName = factory.GetImportedClassName( name );

			// don't care about the exception, just give us a null value.
			return System.Type.GetType( importedName, false );
		}