 <p>You still need to use <code>IList&lt;T&gt;</code> instead of <code>List&lt;T&gt;</code>, because NH needs its own collection implementation.</p> <p>Consider:</p> <ul> <li>You won't get very far in a complex model without lazy loading, except your database fits into RAM or you don't mind to cut you OO model into pieces which destroys both maintainability and performance.</li> <li>You can have entities without virtual members when you use interfaces to create proxies from. However, you should only use these interfaces to reference to entities, because they could always be proxies.</li> </ul>