Я разработчик Java, поэтому я не могу комментировать какие-либо права на Entity Framework. Я могу вам сказать, что решения ORM, такие как Hibernate, позволяют сохранять постоянство POJO, не прибегая к общим абстрактным классам, интерфейсам или модификации байтового кода. Он обрабатывает отношения, такие как 1: m, которые вы цитируете для Foo и Bar, без необходимости использовать специальные классы коллекции.
Специальный соус выводится в картографическую конфигурацию и сам Hibernate.
Немного, что я прочитал о Entity Framework, говорит о том, что это решение ORM с той же целью: постоянство POCO. Я не видел упоминаний об интерфейсах. Я не вижу необходимости в них из вашего примера, потому что он слишком абстрактный.
Я предполагаю, что можно получить эту независимость между бизнес-объектами и уровнем персистентности, не прибегая к этим интерфейсам, потому что я знаю, что это делает Hibernate. Я бы сказал, что решение Spring JDBC также выполняет это, потому что нет необходимости в общих интерфейсах. Они используют конструкцию RowMapper для передачи данных из запроса в объект.
Хотелось бы, чтобы я точно советовал вам, как это сделать с помощью Entity Framework, но, может быть, вы покоряетесь, зная, что это можно сделать.