I'm using FluentNHibernate to try and update a class with a very simple mapping (below). Language does NOT have to be selected. When I do an Insert and I've set the Language property, everything works as expected. If I then try and do an update, setting ONLY the reference property, no update statement is issued. If I update one of the non reference properties AND the Language, the update statement is issued.
I'm using NH v.3.3.1.4000 and FluentNH v.1.3.0.733.
public class OrderItem
{
    public OrderItem()
    {
        OrderDate = DateTime.Now;
        OrderStatus = Models.OrderStatus.Pending;
    }
    public virtual int OrderId { get; set; }
    public virtual Language Language { get; set; }
    public virtual DateTime OrderDate { get; set; }
    public virtual OrderStatus OrderStatus { get; set; }
}
public class OrderItemMap : ClassMap<OrderItem>
{
    public OrderItemMap()
    {
        Table("tblOrder");
        Id(x => x.OrderId);
        Map(x => x.OrderDate);
        Map(x => x.OrderStatus).CustomType(typeof(Int32));
        References(x => x.Language, "LanguageID").Cascade.None();
    }
}
public class LanguageMap : ClassMap<Language>
{
    public LanguageMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);
        Map(x => x.LanguageCode);
    }
}
public class Language
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual string LanguageCode { get; set; }
}
//code to update the object. uncommenting code setting the quantity forces the update, but setting only the Language does not.
        NHibernateRepository<Language> languagedb = new NHibernateRepository<Language>(SessionFactory);
        NHibernateRepository<UserDetail> userdb = new NHibernateRepository<UserDetail>(SessionFactory);
        var newItem = itemdb.All().Where(x => x.OrderId == 16).First();
        newItem.Language = languagedb.All().Where(x => x.Id == 1).First();
        //newItem.Quantity = 200;
        itemdb.Update(newItem);
 
     
     
    