nHibernate HQL - сущность не отображается - PullRequest
15 голосов
/ 05 июля 2011

У меня настроена nHibernate, и я правильно работаю с QueryOver для большинства запросов, однако всякий раз, когда я пытаюсь выполнить HQL CreateQuery, я получаю исключение, что объект не отображается. Я могу подтвердить, что тот же объект работает нормально, используя QueryOver.

Примечание: я свободно использую nHibernate

Есть идеи, что вызвало бы это?

1 Ответ

7 голосов
/ 13 августа 2012

Если вы отключили автоматический импорт в своих сопоставлениях (<hibernate-mapping auto-import="false">), то вам придется использовать полные имена классов везде в ваших запросах, неквалифицированные имена классов не будут работать.

В противном случае включить автоимпорт.

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

Как это:

/*
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...