Okay...this 'kind of' worked but with a catch, when I implementing
both interfaces on the same class, the method for
IJoinedSubclassConvention didn't even fired and only the other Apply
method for ISubclassConvention did fire. Putting them into two
separate class did work fine though. I think each class is being
probed for only one interface which is probably a bug.

Thanks for the help.

On Dec 8, 11:01 am, James Gregory <[email protected]> wrote:
> Sorry, I was wrong there, you need the IJoinedSubclassConvention which
> acts on subclasses that are in separate tables. ISubclassConvention is
> for subclasses that share the table of their parent (and hence the
> lack of a Table method).
>
> We should really make these simpler.
>
> On 12/8/09, Hadi Eskandari <[email protected]> wrote:
>
> > I did implement the ISubclassConvention interface, but I don't see how
> > to change the table name. It seems IClassConvention and
> > ISubclassConvention are two totally different beasts and you can not
> > change the table name with ISubclassConvention (only proxy, lazyload,
> > etc.).
>
> > On Dec 7, 5:45 pm, James Gregory <[email protected]> wrote:
> >> Although you haven't shown it, I'm assuming you're using the Subclass
> >> mapping strategy for your subclasses, so each subclass has it's own
> >> table. To change the table names of subclasses, you'll need to
> >> implement an ISubclassConvention, which is pretty much the same thing
> >> as an IClassConvention except for subclasses. You should be able to
> >> change your TablePrefixConvention to implement both interfaces.
>
> >> On 12/7/09, Hadi Eskandari <[email protected]> wrote:
>
> >> > I'm having an inheritance model like this:
>
> >> > abstract class EntityBase
> >> > abstract class Person : EntityBase
> >> > class Personnel : Person
> >> > class AppUser : Person
>
> >> > when doing the mapping, I'm using EntityBase as layer-supertype so
> >> > there's no table for Entitybase in database. each other class is
> >> > mapped to a table.
>
> >> > my mapping code is this:
>
> >> >             AutoMap.AssemblyOf<Person>()
> >> >                 .Where(t => typeof (EntityBase).IsAssignableFrom(t))
> >> >                 .Conventions.Setup(s =>
> >> >                                        {
> >> >                                            s.Add<TablePrefixConvention>
> >> > ();
> >> >                                            //
> >> > s.Add<ForeignKeyNameConvention>();
> >> >                                        })
> >> >                 .IncludeBase<Person>()
> >> >                 .IgnoreBase<EntityBase>();
>
> >> > Now, I want to use ForeignKey / Table conventions to customize
> >> > database generations and it does not work for inherited tables.
>
> >> > public class TablePrefixConvention : IClassConvention{
> >> >    public void Apply(IClassInstance instance){
> >> >       instance.Table("tbl_" + instance.Entity.Name);
> >> >    }
> >> > }
>
> >> > ...I end up with : AppUser, tbl_Person, Personnel
>
> >> > I tried a ForeignKeyConvention to change the ForeignKey fields, also
> >> > it is causing me other issues.
>
> >> > Is this a known issue? Any workarounds? I'm using version 1.0 of FNH.
>
> >> > --
>
> >> > 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.
>
> > --
>
> > 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.
>
>

--

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