Then make a Class like this:

public class Foo
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public BarCode{get{return bar.Code;}

    private Bar bar;
}

public class Bar
{
    public virtual int Id { get; set; }
    public virtual string Code { get; set; }
    public virtual string Name { get; set; }
}

In your program it would look like the entity you want.

> You want something that is not an entity. What you want ? an entity or 
> something else ?
>
> 2009/8/12 Colin Bowern <[email protected] <mailto:[email protected]>>
>
>
>     I'd like to avoid the DTOs if possible.  Are there any examples of
>     extending the AliasToBean transformer to deal with situations like
>     this?
>
>     On Aug 12, 6:37 pm, armin-landscheidt <[email protected]
>     <mailto:[email protected]>> wrote:
>     > Try to use a third class:
>     >
>     > class FooBar{
>     >     public long Id{get;set;}
>     >     public string Name{get;set;}
>     >     public string BarCode{get;set;}
>     >
>     > }
>     >
>     >    IList<FooBar> result = session.CreateCriteria(typeof(Foo))
>     >         .CreateAlias("Bar", "Bar")
>     >         .SetProjection(Projections.ProjectionList()
>     >             .Add(Projections.Property("Id"), "Id")
>     >             .Add(Projections.Property("Name"), "Name")
>     >             .Add(Projections.Property("Bar.Code"), "BarCode"))
>     >        
>     .SetResultTransformer(Transformers.AliasToBean(typeof(FooBar)))
>     >         .List<FooBar>();
>     >
>     > This is for creating DTOs.
>     >
>     >
>     >
>     > > If I have two classes:
>     >
>     > >     public class Foo
>     > >     {
>     > >         public virtual int Id { get; set; }
>     > >         public virtual string Name { get; set; }
>     > >         public virtual Bar Bar { get; set; }
>     > >     }
>     >
>     > >     public class Bar
>     > >     {
>     > >         public virtual int Id { get; set; }
>     > >         public virtual string Code { get; set; }
>     > >         public virtual string Name { get; set; }
>     > >     }
>     >
>     > > And I want to only return Foo.Id, Foo.Name and Bar.Code (ignoring
>     > > Bar.Id and Bar.Name) I was thinking that projections would be
>     the way
>     > > to go:
>     >
>     > >     IList<Foo> result = session.CreateCriteria(typeof(Foo))
>     > >         .CreateAlias("Bar", "Bar")
>     > >         .SetProjection(Projections.ProjectionList()
>     > >             .Add(Projections.Property("Id"), "Id")
>     > >             .Add(Projections.Property("Name"), "Name")
>     > >             .Add(Projections.Property("Bar.Code"), "Bar.Code"))
>     > >        
>     .SetResultTransformer(Transformers.AliasToBean(typeof(Foo)))
>     > >         .List<Foo>();
>     >
>     > > When I run this, however, the transformer complains of not
>     being able
>     > > to find a setter for the property Bar.Code.  I understand this is
>     > > because the projection cannot resolve the sub-property.  I
>     can't find
>     > > much of a reference on how to do this sort of query.  Any
>     thoughts?
>     >
>     > > Thanks,
>     > > Colin- Hide quoted text -
>     >
>     > - Show quoted text -
>
>
>
>
> -- 
> Fabio Maulo
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" 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/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to