Makes sense.  I am using castles http module for 1 session per
request.

I thought many transaction scopes could reside in 1 session scope,
thus I didnt think the above code would cause a problem.


On Jun 17, 10:21 am, Markus Zywitza <[email protected]> wrote:
> For lazy loading, there must be a session that spans the whole lifetime of
> teh object. If you don't use a SessionScope, a session will be created for
> just the initial FindXXX()-call. That call creates proxies for the lazy
> collections, that reference the session that loaded the original object. If
> you now access those collections they try to load the collection, but the
> session they refer to is already disposed.
>
> As a result, lazy loading must be disabled without session scopes.
> -Markus
> 2009/6/17 csharp <[email protected]>
>
>
>
>
>
> > Can you explain what you mean when you say lazy loading will not work
> > with the code above?
>
> > On Jun 17, 12:27 am, Markus Zywitza <[email protected]> wrote:
> > > Sure, you can. But it will backfire. First, you won't be able to load
> > > anything lazily which might result in loading the whole DB with a simple
> > > Entity.FindAll().
> > > Second, the scope of transactions is dictated by the business logic. You
> > > can't even model a simple debit-credit-exampe with this approach.
>
> > > -Markus
>
> > > 2009/6/17 csharp <[email protected]>
>
> > > > Actually, 1 last question.
>
> > > > I dont expose persistence concerns to anything outside my objects.
> > > > internally can I get this to work with something like this:
>
> > > >        public override void Save()
> > > >        {
> > > >            using (TransactionScope trans = new TransactionScope())
> > > >            {
> > > >                try
> > > >                {
> > > >                    base.Save();
> > > >                    trans.VoteCommit();
> > > >                }
> > > >                catch
> > > >                {
> > > >                    trans.VoteRollBack();
> > > >                    throw;
> > > >                 }
> > > >            }
> > > >        }
>
> > > > On Jun 16, 4:38 am, Markus Zywitza <[email protected]> wrote:
> > > > > No, if you want the the cascade to be performed in a transaction you
> > need
> > > > to
> > > > > put a scope around the code that calls Save().
>
> > > > > -Markus
> > > > > 2009/6/16 csharp <[email protected]>
>
> > > > > > Thanks Markus.
>
> > > > > > I am using it as a named parameter on an attribute, such as :
>
> > > > > >        [BelongsTo(
> > > > > >            Column = "ColumnName",
> > > > > >            Type = typeof(TypeName),
> > > > > >            Fetch = FetchEnum.Join,
> > > > > >            Cascade = CascadeEnum.SaveUpdate,
> > > > > >            NotNull = true)]
>
> > > > > > Doing it this way, I thought, alleviated the need for me to use a
> > > > > > session scope or transaction scope.  If the cascade is performed
> > > > > > automatically since it is declared in the attribute, my question is
> > > > > > does it get performed inside a transaction or not?
>
> > > > > > Or are you saying i must override Save to put the Save method
> > inside a
> > > > > > transaction to be sure?
>
> > > > > > Thanks.
>
> > > > > > On Jun 15, 9:31 am, Markus Zywitza <[email protected]>
> > wrote:
> > > > > > > It uses the current session's transaction context: If you use
> > > > > > SessionScope
> > > > > > > or TransactionScope around your code, it is called within the
> > > > > > transactions
> > > > > > > provided by these scopes. If you call AR naked, there is no
> > > > transaction
> > > > > > > around the call.
>
> > > > > > > -Markus
>
> > > > > > > 2009/6/14 csharp <[email protected]>
>
> > > > > > > > If I specify a Cascade, such as CascadeEnum.SaveUpdate, is the
> > > > save/
> > > > > > > > update performed inside a transaction?  If not, is there a way
> > to
> > > > > > > > specify that it should be?
>
> > > > > > > > Thanks.
> > > > > > > > Jason- Hide quoted text -
>
> > > > > > > - Show quoted text -- Hide quoted text -
>
> > > > > - Show quoted text -- Hide quoted text -
>
> > > - Show quoted text -- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" 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/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to