Я склонен работать наоборот. Я создаю бизнес-объекты так, как они мне нужны, и создаю отображения NHibernate из моих объектов в данные. Вы можете сделать так, чтобы NHibernate сгенерировал для вас схему на основе ваших сопоставлений, или вы можете создать свою собственную схему и создать сопоставления для перехода между ними. Linq2Sql и Entity Framework не поддерживают это. Я не могу говорить с Subsonic по этому вопросу.
Я обычно создаю свои бизнес-классы и получаю приложение, по крайней мере, частично работающее без какой-либо базы данных вообще. Таким образом я смогу лучше понять, что должно делать приложение, и как оно должно себя вести, прежде чем принимать решение о том, как сохранить объекты.