When mapping a HasMany or HasManyToMany in fluent nhibernate, you can specify the column name to use for the list as a parameter to the AsList() method as follows:
HasMany(c => c.Customers)
.AsList(c => c.Column("PositionIndex"));
I would prefer to be able to set this using a Fluent NHibernate convention (either a pre-existing one, or a custom one), especially since the default name appears to be “Index” which is a reserved word in MSSQL.
I’ve tried using a custom convention implementing IHasManyConvention, but the instance parameter does not seem to contain the information about whether its a list, a bag, or a set, and also does not contain the column details for the index column.
public void Apply(IOneToManyCollectionInstance instance)
{
}
Any ideas?
When the convention is being applied, the underlying mapping has already been generated. There is currently no way to change this mapping to an ordered collection (or any other type) through convention.
However, you can still change the type of collection through an IAutoMappingOverride<> as they are applied prior to the conventions.
Even if this is not supported yet, it looks like quite high on the Todo list for the next release. See this thread for further details.