Как правило, абстрактные зависимости не должны быть производными от IDisposable , поскольку это будет Leaky Abstraction . Зависимость может содержать или не содержать неуправляемые ресурсы, зависящие от конкретной реализации. В любом случае, контейнер должен управлять временем жизни , поэтому потребителю не нужно это делать - он не знает о времени жизни зависимости: он может быть передан другим потребителям, и в этом случае он будет разрушительным для преждевременной утилизации этого.
Тем не менее, (LINQ to SQL?) DataContext представляет другую проблему, потому что он уже реализует IDisposable, и вы не можете изменить его, потому что он определен в BCL.
Вы можете правильно реализовать IDisposable для своего репозитория, но это означает, что вам придется сопоставить время жизни для всех репозиториев и текста данных.
Другая альтернатива - просто игнорировать то, что вы держитесь за одноразовый ресурс, но если вы это сделаете, вам нужно будет быть абсолютно уверенным , что Unity должным образом избавится от DataContext в соответствующее время - но поскольку вы планируете использовать время жизни Singleton, это не должно быть проблемой.