Do you mean defining it like this?
public class SpecialUserMap : SubClassMap<SpecialUser>
{
public SpecialUserMap()
{
Map(x => x.Property);
Where("Status = 0");
}
}
Directory.SpecialUsers still retrieves SpecialUsers with a reference
to that Directory object, even SpecialUser objects which are of
Status != 0
On Dec 14, 11:48 pm, Chris C <[email protected]> wrote:
> What if you filter the results on the SpecialUser side instead, i.e.
> include the where clause as part of SpecialUserMap.
>
> On Dec 15, 12:14 am, James Gregory <[email protected]> wrote:
>
>
>
> > My bad, SpecialUser and SpecificUser are a little close for my
> > post-midnight brain to differentiate.
>
> > On 12/15/09, Ethan <[email protected]> wrote:
>
> > > James, I believe you mean this post:
> > >http://groups.google.com/group/fluent-nhibernate/browse_thread/thread....
> > > That wasn't me. I made an honest typo in this post.
>
> > > On Dec 14, 4:09 pm, Ethan <[email protected]> wrote:
> > >> Yes the above is pseudocode, however it should be
> > >> SubClassMap<SpecialUser>, it's written incorrectly in my first post.
>
> > >> On Dec 14, 4:06 pm, Hudson Akridge <[email protected]> wrote:
>
> > >> > Hoping the above is pseudocode, because you're mapping ID's as
> > >> > properties
> > >> > instead of identities.
>
> > >> > Also you've got your inheritance set up to be:
> > >> > : SubClassMap<User>
>
> > >> > and I believe it should be:
> > >> > : SubClassMap<SpecialUser>
>
> > >> > That would explain why it thinks your status property is on the base
> > >> > User's
> > >> > table instead of the SpecialUser's table.
>
> > >> > On Mon, Dec 14, 2009 at 5:59 PM, Ethan <[email protected]>
> > >> > wrote:
> > >> > > I've got a set of mappings like this: public class UserMap :
> > >> > > ClassMap<User>
> > >> > > {
> > >> > > public UserMap()
> > >> > > {
> > >> > > Map(x => x.Id);
> > >> > > Map(x => x.Status);
> > >> > > }
> > >> > > }
>
> > >> > > public class SpecialUserMap : SubClassMap<User>
> > >> > > {
> > >> > > public SpecialUserMap()
> > >> > > {
> > >> > > Map(x => x.Property);
> > >> > > }
> > >> > > }
>
> > >> > > public class DirectoryMap : ClassMap<Directory>
> > >> > > {
> > >> > > public DirectoryMap
> > >> > > {
> > >> > > Map(x => x.Id);
> > >> > > HasMany(x => x.SpecialUsers).Where("Status = 0");
> > >> > > }
> > >> > > }
>
> > >> > > where User is a join map, and SpecialUser joins against it to get
> > >> > > things like Status. I can't get the DirectoryMap to work, since
> > >> > > accessing Directory's SpecialUsers collection causes a "undefined
> > >> > > column Status" error, as NHibernate can't figure out that the Status
> > >> > > column comes from the User table, and not the SpecialUser table.
> > >> > > Is there a way to manually tell NHibernate which column to look at?
>
> > >> > > Another possible solution I thought of is to throw a subselect SQL
> > >> > > statement into the Where clause, but NHibernate tends to do this:
>
> > >> > > Where("SELECT u.Status FROM User WHERE u.Id = Id) generates select
> > >> > > <columns> from [SpecialUser] specialuse0_ inner join [User]
> > >> > > specialuse0_1_ on <id = id> WHERE (SELECT u.Status FROM
> > >> > > specialuse0_.Status = 0)
>
> > >> > > Basically it treats my variables as columns from the SpecialUser
> > >> > > table, and inserts specialuse0_ into the SQL instead.
> > >> > > If there is a way to make NHibernate not touch the SQL inserted in
> > >> > > the
> > >> > > Where clause that might be a possible solution (albeit not a good
> > >> > > one)
> > >> > > as well.
>
> > >> > > --
>
> > >> > > 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%2Bunsubscr
> > >> > > [email protected]>
> > >> > > .
> > >> > > For more options, visit this group at
> > >> > >http://groups.google.com/group/fluent-nhibernate?hl=en.
>
> > >> > --
> > >> > - Hudsonhttp://www.bestguesstheory.comhttp://twitter.com/HudsonAkridge
>
> > > --
>
> > > 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.