Если в вашем домене есть столы и объекты, которые они содержат, то такая объектная модель полностью гарантирована.Единственный вопрос, который вам нужно задать себе, это: Это модель моего домена или модель вычисления?
Исходя из формулировки вашего вопроса, я бы сделал вывод, что это скорее последнее,Ваши объекты не содержат никакого поведения (например, Desk.CleanNonRecentlyUsed ()).
Модель предметной области содержит данные и поведение (истинная объектная модель, я называю эту модель предметной области), вычислительная модель - это данные и раздельное поведение (процедурный код).
Если все, что нужно вашей модели, - это обеспечить эффективный поиск, вы можете выбрать любое абстрактное представление, которое вам подходит.Легкий объект, который захватывает только данные, это нормально, но вы также можете использовать кортежи (или быть специфичными для .net, так как вы упомянули классы GetHashCode: Annonymous) или просто Hashtable для рабочего стола.Ваша вычислительная модель может быть чем угодно: от индекса в вашей базе данных (звучит разумно в вашем примере), от специальной объектной модели или от выделенных алгоритмов над простыми массивами.
В большинстве случаев создание модели вычислений, когда у вас уже есть модель предметной области, не является гарантией.Но иногда это так.