Чтобы отобразить две идентичные таблицы в один класс, вам нужно использовать свойство entity-name Hibernate или NHibernate. Документация здесь:
http://docs.jboss.org/hibernate/core/3.2/reference/en/html/mapping.html#mapping-entityname
Например, для сопоставления таблиц Order to Order и OrderHistory одного класса вы создаете файл сопоставления, который отображает класс order в две таблицы с использованием новых имен сущностей, таких как:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="DomainModel.Order, DomainModel"
table="Orders" entity-name="Order">`
<id name="_id" access="field" column="OrderId">
<generator class="assigned"/>
</id>
<property name= ...>
</class>
<class name="DomainModel.Order, DomainModel"
table="OrderHistories" entity-name="OrderHistory">
<id name="_id" access="field" column="OrderId">
<generator class="assigned"/>
</id>
<property name= ...>
</class>
</hibernate-mapping>
Затем, в зависимости от того, какой тип сущности вам нужен, вы вызываете соответствующие методы сеанса как:
_session.Save("Order", myOrder)
или
_session.Save("OrderHistory", myOrder)
и т.д.. В общем, имя объекта должно заменять имя класса во всех вызовах Hibernate.