2011-07-05 10 views
16

Tengo mi configuración de nHibernate y trabajo correctamente con QueryOver para la mayoría de las consultas, sin embargo, cada vez que trato de hacer un HQL CreateQuery obtengo la excepción de que la entidad no está mapeada. Puedo confirmar que la misma entidad funciona bien con QueryOver.nHibernate HQL - entidad no está mapeada

Nota: Estoy usando fluidez NHibernate

Alguna idea de lo que causaría esto?

+9

¿Funciona si se utiliza el nombre completo de la entidad dentro del HQL? –

+6

Sí, acabo de enterarme de esto. Estoy usando auto-import false en mi conifg (ya que hay algunas entidades, en diferentes espacios de nombres, con el mismo nombre de clase) y debido a esto en HQL se debe usar el nombre completo de la clase. Espero que esto ayude a alguien más también :) – johnnyboy

+7

Es posible que desee publicar esto como una respuesta. –

Respuesta

8

Si ha deshabilitado la importación automática en sus asignaciones (<hibernate-mapping auto-import="false">), tendrá que utilizar nombres de clase totalmente calificados en todas partes en sus consultas, los nombres de clase no calificados no funcionarán.

De lo contrario, habilite la importación automática.

Conventions.Setup(x => 
        { 
         x.Add(FluentNHibernate.Conventions.Helpers.AutoImport.Always()); // AutoImport.Never 
        }); // End FluentMappings.Conventions.Setup 

De esta manera:

/* 
var model = AutoMap.AssemblyOf<MyDb>() 
       .Where(t => t.Namespace.StartsWith("MyDb.Tables")) 
       .Conventions.AddFromAssemblyOf<MyDb>(); 
*/ 




     protected static AutoPersistenceModel CreateMappings() 
     { 
      //return new AutoPersistenceModel().AddMappingsFromAssemblyOf<MyDB.Tables.T_Admin>(); 

      return new AutoPersistenceModel().AddMappingsFromAssemblyOf<MyDb.Tables.T_Admin>() 
       .Where(t => t.Namespace == "MyDb.Tables"); 
     } 

    private static ISessionFactory CreateMsSqlSessionFactory() 
    { 
     //AutoPersistenceModel model = CreateAutoMappings(); 
     AutoPersistenceModel model = CreateMappings(); 

     return Fluently.Configure() 
      .Database(MsSqlConfiguration.MsSql2005 
      .ConnectionString(c => c 
       //.Server("MYCOMPUTER\\SQLEXPRESS") 
       .Server("localhost") 
       //.Database("testdb") 
       .Database("nhDMS") 
       .Username("TableCreatorWebServices") 
       .Password(DB.Tools.Cryptography.AES.DeCrypt("AES_ENCRYPTED_PW")))) 
      //.Mappings(m => m.FluentMappings.AddFromAssemblyOf<SsoToken>()) 
      .Mappings(m => 
       { 
        m.AutoMappings.Add(model); 
        m.FluentMappings.Conventions.Setup(x => 
        { 
         //x.AddFromAssemblyOf<MyDb.Tables.T_Admin>(); 
         x.Add(FluentNHibernate.Conventions.Helpers.AutoImport.Always()); // AutoImport.Never 
        }); // End FluentMappings.Conventions.Setup 
       } 

      ) // End Mappings 
      .ExposeConfiguration(BuildSchema) // BuildSchema function call... 
      .BuildSessionFactory(); 
    } // End Function CreateMsSqlSessionFactory 
Cuestiones relacionadas