If you haven't setup a Fluent NHibernate project before, you should checkout the GettingStarted: Introduction guide.
As mentioned in ClassMap, all mappings are done from inside the constructor of a ClassMap<T> derived class; so baring that in mind, all examples are going to exclude the surrounding class.
// schema
AddressNumber int
AddressStreet varchar(100)
// model
public Address Address { get; set; }
public class Address
{
public int Number { get; set; }
public string Street { get; set; }
}
// mapping
Component(x => x.Address, c =>
{
c.Map(x => x.Number);
c.Map(x => x.Street);
});
In this example, the first lambda (x) is used for specifying which property on your model is a component, and the second lambda (c) is used for actually defining what the component is. When you're working inside the second lambda, a lot of the methods that are available with the ClassMap are able to be used with components.
If you need to have a property in your component that references it's parent, you can use the WithParentReference method.
// model
public Address Address { get; set; }
public class Address
{
public int Number { get; set; }
public string Street { get; set; }
public Person Resident { get; set; }
}
// mapping
Component(x => x.Address, c =>
{
c.Map(x => x.Number);
c.Map(x => x.Street);
c.WithParentReference(x => x.Resident);
});