Свободный NHibernate: у сущности '(имя метода)' нет сопоставленного идентификатора. - PullRequest
0 голосов
/ 06 февраля 2012

Я впервые пробую Fluent NHibernate и Auto mapping. К сожалению, я столкнулся с проблемой, которую не могу решить. Я получаю сообщение о том, что метод одного из моих классов не может быть сопоставлен.

public class Person 
{
   public IEnumerable<string> GetStuff(){return stuff;}
}

Сообщение об исключении:

The entity '<GetStuff>d__0' doesn't have an Id mapped.

Я даже пытался добавить IAutoMappingOverride, чтобы игнорировать метод (используя map.IgnoreProperty).

Действительно ли он пытается сопоставить метод? что здесь происходит?

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

Каждая сущность, которую вы хотите использовать для Automap, должна иметь свойство Id или наследовать от класса, который имеет свойство Id. Ваш класс Person не делает ни того, ни другого.

Кроме того, по моему опыту, все открытые методы в сущностях должны быть объявлены virtual (хотя это может и не потребоваться, если вы стремитесь загрузить все).

0 голосов
/ 07 февраля 2012

Я справился с этим, вручную пометив каждую сущность интерфейсом.

public class MyAutomappingConfiguration : DefaultAutomappingConfiguration
{
    public override bool ShouldMap(Type type)
    {
        return type.GetInterfaces().Contains(typeof (IEntity));
    }
}
...