Я думаю, вы должны использовать набор данных только для передачи данных. Не для проверки бизнес-правил. Таким образом, вы все еще можете следовать учебнику и сохранить хранилище. Но замените весь код Linq to SQL внутри репозитория собственным кодом набора данных.
Ваши бизнес-объекты будут теми, которые реализуют метод GetRuleViolation()
.