W aplikacji odwołuję się do bazy danych zwykłym zapytaniem i czytając przez wbudowany SqlDataReader
dane są standardowo konwertowane i wpisywane do prostych obiektów (POCO) które mają jedynie zaimplementowane OnPropertyChanged

W ten sposób pobieram elementy, jednak chciałbym pobrać subelementy i zrobić to leniwie, tj. tylko w przypadku odwołania się do nich.
W encjach nie mogę się odwoływać do serwisu po pierwsze ze względu na architekturę

Czy dobrą praktyką jest przekazywanie do encji instancji serwisu która pobrała element, tak żeby encja w przypadku odwołania do subelementów mogła się odwołać do serwisu? Czy takie rozwiązanie jest stosowane?

Pseudokod jak miałoby to wyglądać:

public interface ISubElementsSvc
{
  List<Subelement> GetSubElements(int elementId);
}

public class DataService : ISubElementsSvc
{
  public List<Element> GetElements()
  {
    // mock
    return new List<Element>
    {
      new Element { Id = 1, Name = "a", Svc = this },
      new Element { Id = 2, Name = "b", Svc = this },
      new Element { Id = 3, Name = "c", Svc = this }
    };
  }

  public List<Subelement> GetSubElements(int elementId)
  {
    // mock
    return new List<Subelement>
    {
      new Subelement { Name = "aa" },
      new Subelement { Name = "bb" },
      new Subelement { Name = "cc" }
    };
  }
}

public class Element
{
  public int Id { get; set; }
  public string Name { get; set; }
  public ISubElementsSvc Svc { get; set; }

  Lazy<List<Subelement>> subelements = new Lazy<List<Subelement>>(() => Svc.GetSubElements(this.Id));
  public List<Subelement> Subelements
  {
    get { return subelements.Value; }
  }
}

public class Subelement
{
  public string Name { get; set; }
}

Proszę bez sugestii o zmianę na entity framework czy cokolwiek innego bo to nie wchodzi w grę