I have a base class DomainObject for all my business objects I am using with NHibernate. It contains the Id property.
DomainObject
Id
public abstract
You can implement a backdoor property as described here to get the actual nonproxied instance.