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