You should have a look at conditional applying of
conventions<http://wiki.fluentnhibernate.org/Conventions#Conditional_applying_of_conventions>
on
the wiki, and specifically the acceptance criteria
API<http://wiki.fluentnhibernate.org/Acceptance_criteria>;
though honestly, I think you'll still end up needing to use magic strings to
some degree.

On Tue, Feb 2, 2010 at 11:51 PM, devonlazarus <[email protected]>wrote:

> I understand there is no way we can guarantee conventions being
> applied in a given order, but I was wondering if anyone has a better
> way to accomplish this.
>
> Essentially, 99% of our many-to-one references follow this convention:
>
> instance.Column(instance.Property.Name + "Id");
>
> However, we have one reference that doesn't (legacy data model = no
> choice here). So I thought I'd just implement an IPropertyConvention:
>
> if (instance.Property.Name.Equals("LastModifiedBy"))
>    instance.Column("LastModifiedPersonId");
>
> After coding it I realized the mistake since I'm trying to override a
> reference and not a property. (D'oh!)
>
> So, I modified the reference convention:
>
> instance.Property.Name.Equals("LastModifiedBy") ?
>    instance.Column("LastModifiedPersonId") :
>    instance.Column(instance.Property.Name + "Id");
>
> This works, but I really don't like the implementation. Strings, for
> one, conditional for another. If I find another m-1 that must be
> overridden like this, I have to add another string and another
> conditional (if then, case, whatever fits the bill).
>
> Anyone run into something like this and have a better solution? Is
> there any way, other than matching magic strings, that I can implement
> an IReferenceConvention just for that one property (in effect, giving
> me two implementations of IReferenceConvention)?
>
> Cheers,
>
> -devon
>
> --
> 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]<fluent-nhibernate%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/fluent-nhibernate?hl=en.
>
>

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