Hey Nathan, buena pregunta.
Como han dicho otros, lo mejor que puede hacer es abstraer todos sus métodos GET/WRITE, y esconder completamente el DataContext de su lógica de negocios.
Mi enfoque para esto ha sido escribir un DAL con un montón de métodos genéricos que usan la reflexión para hacer lo que sea necesario.
En estos casos, una vez que el método recibe un objeto, digamos "Producto", puede hacer lo que quiera internamente, independientemente de su tecnología ORM/Acceso a datos. Si lo desea, podría literalmente simplemente escribir una cadena de SQL en función de unos pocos parámetros y la reflexión del objeto.
SIN EMBARGO, hacer esto solo no lo desvinculará completamente de LINQ a SQL.
El problema en realidad son las entidades mismas. Incluso si abstrae el método para recuperar datos, aún estará usando esas Entidades en su lógica empresarial.
Siento que, de momento, es algo con lo que estoy dispuesto a vivir, porque volver a escribir mis propias Entidades desconectadas parece un puente que todavía no estoy dispuesto a cruzar, solo porque parece una gran cantidad de trabajo innecesario ...
Estaría muy interesado en ver cómo otros abordan esto sin embargo.
¡salud!
Marc, buena publicación en el blog. +1 –