передача объекта с коллекцией из домена в modelDTO с помощью nhibernate - PullRequest
0 голосов
/ 19 февраля 2012

выше - это код, который я использую для манипулирования данными из моего домена в модель dto, которую я использую для сериализации wcf.Мой вопрос - как передать объект mother с коллекцией детей в MotherDTO.В текущей ситуации с кодом я передаю только данные без дочерних элементов.Нужно ли использовать сессию в строке и добавить сессию MotherDTO dto = new MotherDTO (data, session);и использовать этот сеанс для получения коллекции детей в ДТО.Если так, то как?Пожалуйста помоги.

С уважением,

public MotherDTO GetMotherData()
    {
        using (ISession session = instance.OpenSession())
        {
            using (ITransaction tx = session.BeginTransaction())
            {
                Mother data = session.Query<Mother>()
                    .Fetch(x => x.Childrens)
                    .FirstOrDefault();
                tx.Commit();

                MotherDTO dto = new MotherDTO(data);
                return dto;
            }
        }
    }

MotherDTO.cs

        public MotherDTO(Mother x)
        {
            Name = x.Name;
            List<Children>Childrens= new List<Children>();
            foreach (Children obj in x.Childrens)
            {
                States.Add(obj);
            }
        }

Mother.cs

 public virtual string Name
        {
            get { return _Name; }
            set
            {
                _Name = value;
            }
        }


        public virtual Iesi.Collections.Generic.ISet<Children> Childrens
        {
            get
            {
                return _Childrens;
            }
            set
            {
                if (_Childrens == value)
                    return;
                _Childrens = value;
            }
        }

1 Ответ

0 голосов
/ 19 февраля 2012

Поскольку вы уже загружаете свою коллекцию Children, вы можете использовать Automapper для заполнения ваших DTO.
Если вы хотите узнать, как настроить Automapper для работы с вложенной коллекцией, вы можете прочитать здесь :

Mapper.CreateMap<Order, OrderDto>()
    .ForMember(dest => dest.OrderLineDtos, opt => opt.MapFrom(src => src.OrderLines));
Mapper.CreateMap<OrderLine, OrderLineDto>()
    .ForMember(dest => dest.ParentOrderDto, opt => opt.MapFrom(src => src.ParentOrder));
Mapper.AssertConfigurationIsValid();
...