you can mark your collection mapping as not Lazy.

Since you are returning proxies for the the collection, once you call your
method it's going to want to load the actual objects to fulfill your
request.  If you've disposed of the Session you'll get that error.

On Monday, April 23, 2012, s-stude wrote:

> Fran, thank you foy your response.
>
> I agree that I don't need to map it, but I have an error
> --- NHibernate.LazyInitializationException:
> Initializing[Core.Entities.Topic#1]-failed to lazily initialize a
> collection of role: Core.Entities.Topic.Votes, no session or session
> was closed
>
> If I remove the virtual keyword from this readonly property I get an
> error like this
> --- The following types may not be used as proxies:
> Core.Entities.Topic: method get_VotedUpCount should be 'public/
> protected virtual' or 'protected internal virtual'
>
>
> On Apr 23, 8:40 pm, Fran Knebels <[email protected] <javascript:;>>
> wrote:
> > Why map it at all?  The point of the mapping is to map domain properties
> to
> > table columns.  If this is just a convenience method for your domain
> layer,
> > you shouldn't have to map it all.
> >
> >
> >
> >
> >
> >
> >
> > On Monday, April 23, 2012, s-stude wrote:
> > > Hi.
> >
> > > I'm using Nhibernate 3.2.0.4000 and FluentNHibernate 1.3.0.717.
> >
> > > I have next Entity
> >
> > > public class Topic : EntityBase
> > > {
> > >        private readonly ICollection<Vote> _votes;
> >
> > >        public virtual string Title { get; protected set; }
> > >        public virtual User CreatedBy { get; protected set; }
> > >        public virtual ICollection<Vote> Votes
> > >        {
> > >                get { return _votes; }
> > >        }
> >
> > >        public virtual int VotedUpCount
> > >        {
> > >                get
> > >                {
> > >                        return _votes.Count(v => v.VotedTo ==
> > > VoteType.VoteUp);
> > >                }
> > >        }
> >
> > >        // ....
> > > }
> >
> > > I need to map VotedUpCount because I get an error. But I don't need
> > > this column in my table. I just want to get real-world domain entity.
> >
> > > I tried this one:
> >
> > > public class TopicMap : ClassMap<Topic>
> > >    {
> > >        public TopicMap()
> > >        {
> > >            Id(x => x.Id);
> > >            Map(x => x.Title);
> > >            Map(x => x.VotedUpCount).Access.ReadOnly();
> > >            Map(x => x.VotedDownCount).Access.ReadOnly();
> > >            References(x => x.CreatedBy);
> > >            HasMany<Vote>(x => x.Votes)
> > >                .Cascade.All();
> > >        }
> > >    }
> >
> > > But I recieve an error Invalid column name 'VotedUpCount'.
> > > Is there any way to map it in the proper way?
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "nhusers" group.
> > > To post to this group, send email to 
> > > [email protected]<javascript:;>
> <javascript:;>
> > > .
> > > To unsubscribe from this group, send email to
> > > [email protected] <javascript:;> <javascript:;>.
> > > For more options, visit this group at
> > >http://groups.google.com/group/nhusers?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected]<javascript:;>
> .
> To unsubscribe from this group, send email to
> [email protected] <javascript:;>.
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
>

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