Я бы хотел расширить дизайн вашего приложения, включив в него многоуровневую архитектуру на основе доменной модели.
Таким образом, вы можете создать модель предметной области, которая отвечает требованиям системы, абстрагируясь от того, как работает сопоставление. Например, у вас может быть общий интерфейс для уровня доступа к данным, который возвращает сопоставленные объекты. Реализация этого интерфейса может быть создана для старых отношений m2m "равенство строк" в устаревшей базе данных. Однажды, когда вы будете готовы отказаться от унаследованной базы данных, можно создать новую реализацию для другой модели ER db, которая позволит вашей доменной модели (объектная модель) и более высоким уровням (сервисам, пользовательскому интерфейсу и т. Д.) Остаться неизменными (поскольку все использовать общий интерфейс).
В вашей объектной модели вы можете определить каждый объект, который нуждается в Notes, и каждый из них должен содержать коллекцию Notes для каждого экземпляра. Например. У Foo есть коллекция Notes; Бар имеет коллекцию заметок. Ваш интерфейс репозитория будет выглядеть после возврата этих сущностей, но реализация этого репозитория будет беспокоиться о том, как он читается и сохраняется в БД.