Если я вас правильно понимаю, вы хотите запретить другим пользователям класса создавать его из конструктора без параметров, но при этом разрешить его использовать в Linq2SQL (как и должно быть).
К счастью, вынеправильно, когда вы говорите, что конструктор по умолчанию без параметров не может быть изменен.Если вы измените конструктор класса сущностей Linq2SQL на закрытый, он все равно будет вызываться Linq2SQL, так как он использует отражение, и если вы используете отражение, можно вызвать частный конструктор.(Между прочим, другие изменения в конструкторе также могут быть сделаны с Linq2SQL).
Конечно, другие пользователи класса могут также использовать отражение, чтобы вызвать этот частный конструктор и создать класс в частном состоянии, ноэто справедливо для всех классов .NET (и действительно применяется в других местах - например, зачастую нетрудно узурпировать конфиденциальность классов C ++, хотя в любом случае нет гарантии, независимой от реализации).Но тогда почти всегда можно использовать отражение, чтобы испортить класс;инкапсуляция - это механизм обеспечения правильности, а не безопасности.(Но ограничения безопасности в отношении того, какой код может использовать рефлексию, создают безопасность поверх этой меньшей гарантии).