DataContext довольно легкий и предназначен для использования в качестве единицы рабочего приложения. Однако я не думаю, что я бы сохранил DataContext в моем объекте. Возможно, вы захотите взглянуть на шаблоны репозитория, если не собираетесь использовать сгенерированный дизайнером код для управления своими бизнес-объектами. Шаблон репозитория позволит вам работать с вашими объектами, оторванными от контекста данных, а затем повторно присоединять их перед выполнением обновлений и т. Д.
Лично я могу по большей части жить с кодом, сгенерированным дизайнером DBML, с частичными реализациями классов для моей бизнес-логики и логики валидации. Я также делаю сгенерированный дизайнером контекст данных абстрактным и наследуем от него, чтобы позволить мне перехватывать такие вещи, как методы хранимых процедур и табличных функций, которые добавляются непосредственно в контекст данных, и применять там бизнес-логику.
Шаблон, который я использовал в ASP.NET MVC, состоит в том, чтобы внедрить фабричный класс, который создает соответствующие контексты данных, необходимые для единиц работы. Использование фабрики позволяет мне достаточно легко смоделировать контекст данных, используя (1) обертку вокруг существующего класса контекста данных, чтобы он был смоделирован (смоделируйте обертку, так как DataContext не легко смоделируется) и (2) создавая контексты Fake / Mock и фабрики по их созданию. Возможность создавать их по желанию на фабрике делает меня таким, чтобы мне не приходилось хранить их в течение долгого времени.