Как отобразить два компонента одного типа с помощью Fluent NHibernate AutoMap Conventions - PullRequest
0 голосов
/ 29 марта 2012

Мы используем Fluent NH с условным картографированием.У меня есть следующее:

public class Foo() : Entity
{
  public BarComponent PrimaryBar { get; set; }
  public BarComponent SecondaryBar { get; set; }
}

public class BarComponent
{
  public string Name { get; set; }
}

Я дошел до того, что он создаст таблицу foo с одним полем имени.Я попробовал следующее переопределение, и оно не работает.

  public class FooOverride : IAutoMappingOverride<Foo>
    {
        public void Override(AutoMapping<Foo> mapping)
        {
            mapping.Component(x => x.PrimaryBar).ColumnPrefix("primary");
            mapping.Component(x => x.SecondaryBar).ColumnPrefix("secondary");
        }
    }

Мне действительно нужно сделать полное переопределение или можно как-то заставить работать здесь?

Ответы [ 2 ]

0 голосов
/ 10 апреля 2012

Я закончил тем, что получил способ, который я описал в этом вопросе. Это оказалось проблемой с нашей AutoMappingConfiguration, которая наследуется от DefaultAutomappingConfiguration. Мы не идентифицировали компоненты должным образом.

0 голосов
/ 29 марта 2012

Я столкнулся с этим пару лет назад, когда начал заниматься FNH.Это один из немногих сценариев, которые я видел, когда FNH Automapping не «просто работает».

Подход, предложенный мне в то время, который я успешно использовал (однако с сущностями, а не с компонентами) - создавать пустые промежуточные объекты и ссылаться на них в классе-потомке.

В вашем случае вы можете создать два новых пустых класса, которые наследуются от BarComponent (скажем, PrimaryBarComponent и SecondaryBarComponent).

Затем, в вашем классе Foo, объявите их как:

public PrimaryBarComponent PrimaryBar { get; set; }
public SecondaryBarComponent SecondaryBar { get; set; }

На мой взгляд, это kluge, но он отлично работает с сущностями и списками сущностей и не требует каких-либо переопределений илиусловные обозначения.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...