<p>I have SSRS Report being accessed from a Report Server. Is there any way I can give an error message of my own, if my report fails to open there? </p>

You need to assign a Country instance to the Country property of the Person instance (not just set the ID).  Something like:
```
```
Person p = new Person();
p.Country = session.Load<Country>(countryId);
session.Save(p);
```
```
Then NHibernate will know what to do.  This will also not cause a DB hit to retrieve country, since the Load method will return a Country proxy and the only thing you're accessing is the Country instance's ID.