Список не загружается при получении объекта - PullRequest
0 голосов
/ 13 февраля 2012

Смотрите карту ниже.

Когда я делаю: session.Get<Customer>(theId); Результат возврата - правильный клиент, но список Address пуст.В базе данных я вижу запись клиента и адрес.Запись адреса в поле Customer_id (сгенерированная NHibernate) не равна нулю и имеет правильное значение (идентификатор клиента).

Класс и отображение

public class Customer
{
    public virtual int Id { get; set; }
    public virtual string LastName { get; set; }
    public virtual Iesi.Collections.Generic.ISet<CustomerAddress> Address { get; set; }

    public Customer()
    {
        Address = new Iesi.Collections.Generic.HashedSet<CustomerAddress>(); 
    }
}

public class CustomerAddress
{
    public virtual int Id { get; set; }
    public virtual string Street { get; set; }
    public virtual Customer Customer { get; set; }
}

public class CustomerMap : ClassMap<Customer>
{
    public CustomerMap()
    {
        Id(x => x.Id).GeneratedBy.Native();
        Map(x => x.LastName)
            .Length(50)
            .Not.Nullable();    
        HasMany(x => x.Address)
            .AsSet()
            .Inverse()
            .Cascade.AllDeleteOrphan();
    }
}

public class CustomerAddressMap : ClassMap<CustomerAddress>
{
    public CustomerAddressMap()
    {
        Id(x => x.Id).GeneratedBy.Native();
        Map(x => x.Street).Length(50);
        References(x => x.Customer);
    }
}

1 Ответ

3 голосов
/ 13 февраля 2012

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

HasMany(x => x.Address)
        .AsSet()
        .Inverse()
        .Cascade.AllDeleteOrphan()
        .Not.LazyLoad();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...