public void Mapping( IMapping mapping ) { mapping.Table<Product>( 1 ); mapping.Table<ProductRating>( 3 ); mapping.PropertyMap<RootTable, int>( x => x.Size, record => record.GetInt32( 1 ) * 2 ); mapping.PropertyMap<RootTable, TransactionManager>( x => x.TransactionManager, reader => null ); mapping.PropertyMap<RootTable, DateTime>( x => x.DueDate, ( record ) => record.GetValue( 2 ) == DBNull.Value ? default( DateTime ) : record.GetDateTime( 2 ) ); mapping.TableJoin<Product, ProductRating>( ( product, rating ) => product.Id == rating.ProductId, ( product, list ) => product.ProductRatings = list ); mapping.Join<RootTable, Product>( ( x, y ) => x.Products = y ); mapping.AddJoin( x => x.DictionaryTableJoin<Product>() .Condition( ( product, o ) => product.Id == o.ProductId ) .KeyColumn( "Id" ) .ValueColumn( "Quantity" ) .SetDestinationProperty<int, int>( ( product, values ) => product.Stock = values ) .ChildTable( 2 ) ); }