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
-~----------~----~----~----~------~----~------~--~---