Ok i found  the documentation and tried to implement
IReferenceConvention. Is it what i need for many to one collections ?
Basically i want :
if my field is a mapped object and starts with id, make it a many to
one.

i found two ways to do it.

 public class ManyToOneConventionCorrection
   : IReferenceConvention
    {
        public bool Accept(IManyToOneInstance instance)
        {
            return instance.Name.ToLower().StartsWith("id");
        }

        public void Apply(IManyToOneInstance instance)
        {
            if (Accept(instance))
                instance.Column = instance.Name;
        }
    }

void ApplyConventions(AutoPersistanceModel model)
{
     model.Conventions.Setup(s =>s.Add<ManyToOneConventionCorrection>
())
}

It does not work, i never reach any of the code through debugger.
Works well for properties IPropertyConvention and class
IClassConvention, but not for IReference, at least not if reference is
a many to one.


i found this other way to define the convention which works well
2 .
void ApplyConventions(AutoPersistanceModel model)
{
var manyToOneConventionCorrection = ConventionBuilder.Reference.When(
              x => x.Expect(y => y.Name.StartsWith("id")),
              z => z.Column(z.Name));

autoPersistanceModel.Conventions.Setup(s =>s.Add
(manyToOneConventionCorrection))
}


On 17 août, 19:28, James Gregory <[email protected]> wrote:
> By convention your property should be CarType, not IdCarType. If your column
> is IdCarType then you need to specify that manually by using Column, if this
> is a domain-wide convention then you should look into defining an actual
> convention <http://wiki.fluentnhibernate.org/Conventions>.
>
> On Mon, Aug 17, 2009 at 5:01 PM, Jim Tanner <[email protected]> wrote:
>
> > I have the following class
>
> > public Car
> > {
> >  int Id {get;set}
> > String Color {get;set}
> >  CarType IdCarType {get;set}
> > }
>
> > I am using autoconfiguration and i get the following mapping
>
> >    <id name="Id" type="Int">
> >      <column name="Id" />
> >      <generator class="identity" />
> >    </id>
> >    <property name="Color" type="String">
> >      <column name="Color" />
>
> >    <many-to-one name="IdCarType">
> >      <column name="IdCarType_id" />
> >    </many-to-one>
>
> > The problem being 'IdCarType_id', my column is actually IdCarType.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Fluent NHibernate" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/fluent-nhibernate?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to