Отображение одного источника данных во время выполнения, а другого в DesignTime совсем не страшно. Я думаю, что то, с чем вы боретесь, довольно распространено, когда используются DataTables, DataSets, DataGridViews и дизайнер. Это отличный инструмент, если вы работаете с очень простыми формами Master / Detail и не хотите выходить за рамки стандартного поведения.
В описанном вами сценарии вы хотите изменить обычное использование этих элементов, чтобы можно было предварительно загружать данные при запуске приложения. Как вы узнали, это вызывает некоторые проблемы, с которыми вам теперь придется справиться самостоятельно. Частью решения этой проблемы является сброс DataSource к новому значению во время выполнения. Это совсем не безумие или плохая практика.
Однако, когда вы начинаете говорить о подделках и кешировании из-за проблем с производительностью, я задаюсь вопросом, действительно ли вам вообще нужна база данных. Похоже, вы хотите разработать модель (используя объекты C #), которую вы можете привязывать, обновлять и сериализовать по мере необходимости. Хотя я не уверен, что это верно для вашего дизайна, если бы это был мой дизайн (с моим ограниченным пониманием вашей проблемы), это было бы то, чем я бы занимался. База данных не будет большой частью моего проекта на данный момент, если вообще. Я бы построил объекты C #, которые представляют мои таблицы, класс модели для управления этими элементами и фабрику для создания экземпляра модели и управления ее временем жизни.
Если бы в какой-то момент у меня было для сериализации / взаимодействия с / с базой данных, я бы встроил это в модель.
Большой вопрос для меня в отношении элегантности: как бы я все это проверил? Если я привязываюсь во время разработки и полагаюсь на статическую загрузку во время выполнения, тогда моя конструкция не позволяет мне выполнять какие-либо модульные или интеграционные тесты на основе классов. Если бы я разделил компоненты базы данных на модель, то я бы разделил задачу управления данными на класс, в который я мог бы вставить интерфейс, что давало бы мне что-то подделать или посмеяться и заглушить.