NHibernate - Поиск плохих отображений - PullRequest
1 голос
/ 16 июня 2011

Есть ли в NHibernate какие-либо инструменты или, возможно, служебные методы, которые могут помочь мне определить, какое отображение выдает «Указанный ключ отсутствует в словаре»?

Я понимаю, что у меня плохое отображение, но у меня есть сотни доменных объектов. Что я могу сделать, чтобы быстрее найти источник моей ошибки?

Из NHibernate 2.1.2GA Источник:

private PersistentClass GetPersistentClass(string className)
{
    PersistentClass pc = configuration.classes[className]; // <- "The given key was not present in the dictionary"
    if (pc == null)
    {
     throw new MappingException("persistent class not known: " + className);
    }
    return pc;
}

И в этом случае className - это System.Int32.

Хорошо, поэтому у меня было поле int, помеченное <many-to-one> вместо <property>. Я закончил тем, что выкопал источник для NH и отладил, чтобы добраться до этой точки.

1 Ответ

6 голосов
/ 16 июня 2011

NHibernate Mapping: создание проверок Sanity

[Test]
public void AllNHibernateMappingAreOkay()
{
   IDictionary allClassMetadata = session.SessionFactory.GetAllClassMetadata();
   foreach (DictionaryEntry entry in allClassMetadata)
   {
        session
            .CreateCriteria((Type) entry.Key)
            .SetMaxResults(0)
            .List();
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...