Проблема здесь в том, что до SP1 не было хорошего способа сериализации DataContract для обработки графиков объектов, имеющих циклы. В результате для LINQ to SQL было принято компромиссное решение, чтобы позволить пользователям выбрать однонаправленную сериализацию и только сериализовать коллекции, а не ссылки. Этот механизм не работает в тех случаях, когда вы действительно хотите сериализовать ссылку (как, например, ваш сценарий выше), но он, по крайней мере, побуждает вас к некоторым распространенным сценариям.
В пакете обновления 1 (SP1) в WCF была добавлена новая поддержка, которая позволяет сериализации DataContract иметь дело с циклами, но вы должны согласиться на это, изменив некоторые из своих атрибутов DataContract и, возможно, также внеся изменения в реализацию коллекций и ссылочных классов, чтобы правильно обрабатывать сериализацию и особенно десериализацию поведения WCF. В Entity Framework были внесены изменения, чтобы воспользоваться преимуществами этих новых функций, поскольку он еще не выпустил свою первую версию, но в Linq to SQL было только небольшое обновление пакета обновления в sp1, и он не был изменен, чтобы воспользоваться этим возможность.
Я не экспериментировал с этим на L2S, но возможно было бы сгенерировать ваши собственные классы, которые работают с L2S и имеют правильную поддержку сериализации WCF с циклами.
Danny