Nhibernate: Stop it from joining to a table that is not needed
- by Aaron
I have two tables (tbArea, tbPost) that relate to the following classes.
class Area
{
    int ID
    string Name
    ...
}
class Post
{
    int ID
    string Title
    Area Area
    ...
}
These two classes map up with Fluent Nhibernate. Below is the post mapping.
public class PostMapping : ClassMap<Post>
{
    public PostMapping()
    {
        Cache.NonStrictReadWrite();
        this.Table("tbPost");
        Id(x => x.ID)
            .Column("PostID")
            .GeneratedBy
            .Identity();
        References(x => x.Area)
            .ForeignKey("AreaID")
            .Column("AreaID");
        ...
    }
}
Any time I perform a query on the Post table "where AreaID = 1(any AreaId)", nhibernate will join to the area table. 
(What Nhibernate generates for a query)
SELECT
    post fields
,   area fields (automatically added)
FROM tbPost p
LEFT JOIN tbArea a on 
        p.areaid = a.areaid
where
    p.areaid = 1
I have tried setting Area to LazyLoad, to Fetch.Select, ReadOnly, and any other setting on the reference and still it will always join to Area. 
I am trying to optimize the backend database queries, and since I don't need the area object loaded just filtered I would like to eliminate the unnecessary join to Area each time I Query post. 
What configurations do I need to change or mappings to get area to still be related to post in my objects, but not query it when I filter on AreaID?