I’m trying to set the fetchmode to eager for a property that is two levels deep in my object graph.
DetachedCriteria homeSupportServicesPlacementInvoiceQuery = DetachedCriteria.For<HomeSupportServicesPlacementInvoice>()
.SetFetchMode("VendorService", FetchMode.Eager)
.SetFetchMode("VendorService.Vendor", FetchMode.Eager);
NHibernate populates the values of my VendorService object correctly, however after the object is moved to the business layer and is no longer attached to a session, the Vendor property is no longer hydrated. The only other oddity that I’ve notices with this process is that in the quickwatch window, while debugging the attribute for VendorService is null while the Property has been set with the proper values.

What am I doing wrong?
For those following the question, apparently you can set the fetchmode for a property that is not in the mapping and it will get populated (and you can see it in the debug) but the values disappear when you detach the object from the session.
Going on the information you provided I bet that the mapping is incorrect for VendorService.
I would double check that the property Vendor is mapped correctly.