Прежде всего, поскольку вы упоминаете DataContext, я думаю, что вы смотрите на Linq to SQL? Я бы посоветовал использовать Entity Framework. Entity Framework имеет более продвинутые возможности моделирования, которые вы можете использовать в своем сценарии. Он может создавать, например, тип из нескольких таблиц, использовать наследование или сложные типы.
Entity Framework создает модель для вас, которая состоит из трех частей.
- SSDL, в котором хранится внешний вид вашей базы данных.
- CSDL, в котором хранится ваша модель (ваши объекты и отношения между ними)
- MSL, который сообщает Entity Framework, как отобразить ваши объекты в структуру базы данных.
Используя это, вы можете создать унаследованную базу данных и сопоставить ее с моделью домена, которая более соответствует вашим потребностям.
Entity Framework имеет возможность создать начальную модель из вашей базы данных (где отображаются все таблицы, столбцы и ассоциации), а затем вы можете начать реструктуризацию этой модели.
Эти классы генерируются как частичные, поэтому вы можете расширить их, например, разделив пипетированные поля базы данных на отдельные свойства.
Вы также думали об использовании Views? Если возможно, вы можете использовать представления в вашей базе данных, которые дают вам более приятную схему обработки данных, а затем основывать свою модель на представлениях в сочетании с хранимыми процедурами.
Надеюсь, это даст вам какие-нибудь идеи.