Fluent Auto Mappings с абстрактной базой также является частью модели - PullRequest
0 голосов
/ 07 апреля 2011

Хорошо, во-первых, я надеюсь, что это имеет смысл.

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

public abstract class Container
{
  public virtual int Id {get; set};
  public virtual string Name {get; set;}
}

public class FirstSubClass : Container
{
   //properties and behaviour here
}

public class SecondSubClass : Container
{
  //properties of SecondSubclass Here
}

public class ProcessStep
{
   public virtual Container Source {get; set}
   public virtual Container Destination {get; set;}
}

Однако, когда я пытаюсь сгенерировать схему или проверить мои отображения (с помощью SQLite или иным способом), происходит сбой:

NHibernate.MappingException: ассоциация из таблицы ProcessStep ссылается на не отображенный класс: ...... Entities.Container

Если я изменю класс Container и не сделаю его абстрактным, это сработает.

Могу ли я выставить свойство на объекте по отношению к базовому типу, при этом базовый остается абстрактным?

Любая помощь будет с благодарностью.

1 Ответ

4 голосов
/ 08 апреля 2011

По умолчанию Fluent Nhibernate игнорирует абстрактные базовые классы при генерации отображений.Чтобы включить его, необходимо использовать метод IncludeBase :

AutoMap.AssemblyOf<Container>(cfg)
       .IncludeBase<Container>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...