Я на самом деле тоже боролся с этим. Используя простой ванильный LINQ to SQL, я быстро отказался от инструмента DBML, потому что он тесно связывал сущности с DAL. Я стремился к более высокому уровню невежества, хотя Microsoft не делала это очень легким.
То, что я в конечном итоге сделал, - это написание слоя невежественности персистентности, когда DAL наследуется от моих POCO. Унаследованные объекты обладают теми же свойствами POCO, от которых он наследуется, поэтому, находясь на уровне невежественности постоянства, я мог бы использовать атрибуты для сопоставления с объектами. Вызванный затем может привести унаследованный объект обратно к его базовому типу или сделать так, чтобы DAL сделал это для них. Я предпочел последний случай, потому что он уменьшил количество каста, которое нужно было сделать. Конечно, это была в основном реализация только для чтения, поэтому мне пришлось бы вернуться к ней для более сложных сценариев обновления.
Количество ручного кодирования для этого довольно велико, потому что мне также приходится вручную (после кодирования, для начала) вручную поддерживать контекст и поставщика для каждого источника данных, помимо наследования объектов и отображений. Если бы этот проект устарел, я бы определенно перешел к более надежному решению.
В ожидании Entity Framework невежество в постоянстве является часто запрашиваемой функцией в соответствии с блогами разработчиков для команды EF. В то же время, если вы решите пойти по пути EF, вы всегда можете обратиться к заранее подготовленному инструменту невосприимчивости к постоянству, например, к проекту EFPocoAdapter в MSDN.