Как иметь вложенный DTO?

Я имею это как мой объект сущности:

    public partial class RFID_Zones
    {
        public RFID_Zones()
        {
            this.RFID_ZonePoints = new HashSet<RFID_ZonePoints>();
        }

        public int PK_ZoneId { get; set; }
        public int PK_FK_ShipId { get; set; }
        public string ZoneName { get; set; }
        public string Color { get; set; }

        public virtual Ship Ship { get; set; }
        public virtual ICollection<RFID_ZonePoints> RFID_ZonePoints { get; set;}
}

Я пытаюсь вытащить все это с помощью этого кода:

result = _db.RFID_Zones.Where(x => x.PK_FK_ShipId == shipId).Include(x => x.RFID_ZonePoints).ToList();

Это работает, но я не могу сериализовать его без получения ошибки циклической ссылки. При поиске Google я обнаружил, что должен использовать объект передачи данных, поэтому у меня есть это:

public class ZoneDto
{
    public ZoneDto()
    {
        this.Zones = new List<RFID_ZonePoints>();
    }
    public int PK_ZoneId { get; set; }
    public int PK_FK_ShipId { get; set; }
    public string ZoneName { get; set; }
    public string Color { get; set; }
    public List<RFID_ZonePoints> Zones { get; set; }
}

А также:

var dto = zones.Select(x => new ZoneDto { PK_ZoneId = x.PK_ZoneId, PK_FK_ShipId = x.PK_FK_ShipId,
                        Color = x.Color, ZoneName = x.ZoneName, Zones = x.RFID_ZonePoints.ToList()});

У меня все еще есть проблема списка RFID_ZonePoints. Это список другой сущности. Как я могу получить их в объект передачи данных?

0 ответов

Другие вопросы по тегам