LINQ por defecto utiliza la consulta diferida. Cuando «navegamos» entre las clases de un LINQ to SQL (.dbml) éste en background va generando las consultas y de este modo nos ahorramos consultas inutiles.

El problema viene cuando queramos devolver una clase que forma parte de un .dbml como resultado de un método marcado como [OperationContract].

Es necesario modificar el comportamiento por defecto de consulta diferida a una consulta forzada. Ejemplo:

Sino lo hacemos así nos encontraremos que las «clases hijas» no contienen datos.