Моя команда недавно боролась с этой проблемой. Я действительно хотел сохранить «постоянное невежество», означающее, что доменные объекты могут быть созданы как простые старые объекты C # без необходимости наследования от определенного базового класса или засорения класса кучей атрибутов. Как вы сказали, мы хотели иметь возможность изменять постоянный уровень независимо от бизнес-модели.
В конце концов, мы решили, что LINQ - это не тот путь, если вам нужно постоянное невежество. В итоге мы пишем слишком много кода для преобразования между уровнем LINQ и нашим бизнес-уровнем. Когда мы начали писать кучу кода, основанного на отражениях, чтобы попытаться выполнить эти сопоставления автоматически, мы поняли, что скользим по кроличьей норе, и мало что можем показать.
Если для вас важно постоянное невежество, возможно, вам лучше обслужить полноценный ORM, такой как NHIbernate.