Я только начинаю моделировать данные для нового проекта C #, который должен быть постоянным.
Похоже, что самая естественная модель ОО будет иметь множество вложенных обобщенных шаблонов .Net. Списки объектов, и эти объекты также будут содержать списки других универсальных типов и т. Д., Вложенные по крайней мере на три уровня.
В идеале, я хотел бы просто спроектировать модель данных в режиме OO и позволить инструменту Object Relational Mapping справиться с упорством - для меня OO-дизайн гораздо проще, чем реляционный дизайн.
Но мое первоначальное исследование ORM показывает, что они не работают таким образом. Мне пока не ясно, смогу ли я просто создать произвольно сложную объектную модель и ожидать, что ORM сохранит ее "автоматически". (Я задал этот вопрос вчера).
У меня сложилось впечатление, что мне, возможно, придется ограничить свою модель данных OO конструкциями, которые, как я знаю, может обрабатывать ORM, что кажется большим ограничением, особенно когда я еще не выбрал ORM.
Я хочу продолжать разработку проекта и не хочу увязать в исследовании ORM прямо сейчас.
Мой инстинкт состоит в том, чтобы просто проектировать мою объектную модель вокруг того, что я знаю, что я могу сделать в C #, способом, который кажется наиболее естественным. Это поможет мне лучше понять, что действительно требуется для приложения. Я надеюсь, что затем смогу пересмотреть дизайн на основе ограничений ORM, если это окажется необходимым.
Это хороший подход, или я готовлюсь к миру зла? Лучше ли иметь дело с известными ограничениями ORM заранее и «притупить» объектную модель вокруг этих ограничений?
Редактировать: Незаинтересованный Стефан Штайнеггер перечислил большинство ограничений, которые накладывает NHibernate на код OO. Может ли кто-нибудь еще предоставить аналогичный список для других ORM - в частности, Subsonic?