LINQ to SQL supports the basic DataContract serialization out of the box. This basic serialization had no mechanism to tell it which end of an association was the owner to prevent serialization getting stuck in a loop and so LINQ to SQL would only serialize
one side of the relationship.
In .NET 3.5 SP1 DataContract was extended with the IsReference attribute that let you tell it which end got to serialize the others object and which was just a reference back.
LINQ to SQL's designer and SQLMetal tools have not been extended to support this as there was not enough resource to fully test that LINQ to SQL was happy with objects serialized and deserialized using this new "IsReference" mechanism hence
where this an option to turn on "DataContract SP1" serialization within this templates to do just that.