Свободный Nhibernate - отображение коллекции компонентов (объектов значения)? - PullRequest
5 голосов
/ 18 ноября 2010

В настоящее время я использую карты компонентов, такие как:

public class UserMapping
{
         public UserMapping()
         {
            Id(c => c.Id).GeneratedBy.HiLo("100");
            Map(c => c.UserName);
            Component(c => c.Country, CountryComponentMapping.Map);
         }
}


public sealed class CountryComponentMapping
{
    public static void Map(ComponentPart<Country> part)
    {
        part.Map(x => x.CountryName)
        part.Map(x => x.CountryAlpha2)
    }
}

Мне нравится это, потому что мне нужно только определить отображение для объекта компонента / значения в одном месте.

Как мне использовать ту же семантику для коллекции компонента? (например, предположим, что мы хотим изменить это на коллекцию стран в пользовательском объекте)

1 Ответ

7 голосов
/ 25 февраля 2011

Вы можете отобразить это как коллекцию компонентов.К сожалению, в Fluent NHibernate нет перегрузки для HasMany (). Component (), которая позволяет указать, что вы хотите использовать производный класс ComponentMap.Вы можете использовать модификацию вашей техники выше.

public sealed class UserMap : ClassMap<User> {
    public UserMap() {
        Id(c => c.Id).GeneratedBy.HiLo("100");
        Map(x => x.Name);
        HasMany(x => x.Countries).Component(CountryComponentMapping.Map);
    }
}

public sealed class CountryComponentMapping {
    public static void Map(CompositeElementBuilder<Country> part) {
        part.Map(x => x.CountryName);
        part.Map(x => x.CountryAlpha2)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...