Отображение вложенных компонентов в Fluent NHibernate - PullRequest
13 голосов
/ 01 октября 2009

У меня есть объект «Пользователь», который содержит объект значения «Адрес». У меня есть это отображение нормально, используя концепцию компонентов FNH. Однако адрес VO также содержит страну, которая является другим ценностным объектом. Я предполагал, что это должно быть просто вложено как другой компонент, но это, похоже, не работает. Может кто-нибудь сказать мне, как я должен решить это?

Код для отображения ниже ...

Спасибо!

public UserMapping()
        {
            Table("Users");
            Id(c => c.Id).GeneratedBy.HiLo("100");
            Map(c => c.UserName).Not.Nullable().Length(64);
            Map(c => c.Email).Not.Nullable().Length(128);
            Map(c => c.Password).Not.Nullable().Length(256);
            Map(c => c.Roles).Length(64);
            Map(c => c.FirstName).Not.Nullable().Length(64);
            Map(c => c.LastName).Not.Nullable().Length(64);
            Map(c => c.BirthDate).Not.Nullable();
            //Address
            Component(x => x.Address, m =>
            {
                m.Map(x => x.AddressLine1).Not.Nullable();
                m.Map(x => x.AddressLine2);
                m.Map(x => x.City).Not.Nullable();
                m.Map(x => x.Region);
                m.Map(x => x.PostalCode).Not.Nullable();
                //*****Country Here********
                // country has Name and Code

            });
        }

Ответы [ 2 ]

13 голосов
/ 01 октября 2009

Ах, Джимми Богард из списка рассылки FNH показал мне - это довольно просто. Я не знаю, что я делал раньше! Во всяком случае, для всех, кто заинтересован:

Component(c => c.Address, m =>
{
    m.Component(cp => cp.Country, m2 =>
    {
        m2.Map(x => x.Name); //etc
    } 
0 голосов
/ 01 октября 2009

Я бы создал карту для Country и использовал бы m.References(x => x.Country).

...