Это зависит от того, какую базу данных или ORM вы используете. Но по моему опыту это показалось хорошей идеей, но в конечном итоге меня подставило. Вот как это было для меня в LINQ-to-SQL:
У меня был класс репозитория, который имел статическую переменную для контекста данных. Сначала это сработало, но когда мне пришлось делать еще много репозиториев, я в конечном итоге получал ошибки, пока хакнул. Оказывается, что контекст данных в LINQ-to-SQL кэширует все результаты, и нет способа их обновить. Таким образом, если вы добавили сообщение в таблицу в одном контексте, оно не будет отображаться в другом, который кэшировал эту таблицу. Решением было удалить статический модификатор и позволить репозиторию создать контекст в конструкторе. Так как классы репозитория были сконструированы так, как они использовались, то же самое можно сказать и о новом новом контексте данных.
Можно утверждать, что статические переменные оставляют меньше места в памяти, но занимаемая площадь для контекста данных довольно мала, и в конце будет собирать мусор.