Да. Проблема заключается в том, что невозможно навязать контракты для баз данных SQL (контракты в объектно-ориентированном смысле).
То есть мы не можем сказать, что база данных соответствует интерфейсу IPersonRepository
, поэтому мы не можем быть уверены, что она реализует процедуру "dbo.GetPerson", которая возвращает два набора результатов со столбцами a , б, в и д. (Или что у нас есть разрешение на выполнение этой процедуры.) Поэтому мы не можем требовать IPersonRepository
в нашей строке подключения.
Зрелые объектно-реляционные сопоставители, такие как (N) Hibernate, решают эту проблему, создавая предметно-ориентированные языки для описания этих ожиданий (их сложные спецификации конфигурации), но эти методы являются лишь частичным решением, поскольку их нельзя применять на сторона базы данных.
Это еще один аспект несоответствия объектно-реляционного импеданса , хотя о нем я ничего не писал.