I got around it by wrapping the call to EditForm in a
ConversationalScope. Obviously not the best solution here, I'm
assuming the next course of action is to remove the underlying
Conversation pattern from our framework code.

On May 6, 3:49 pm, Nicholas Kilian <[email protected]>
wrote:
> Hi Dan,
>
> Finally got around to playing with this. Lazy loading appears to be working
> fine, but having a problem when cascading a save from a parent to child
> collection.
>
> This is the scenario:
>
> .         Header and Child Entities - Lazy
>
> .         Header -< Child IList relationship - Lazy, Cascade:
> AllDeleteOrphan.
>
> .         List Form
>
> o   Session using ConversationalScope
>
> o   DataGrid populated with Header records.
>
> .         Edit Form
>
> o   No session.
>
> o   DataGrid populated with Header.Detail records.
>
> 1.       App starts, List Form present itself populated with Header records
> from database. The relationship to Child could be lazily loaded on this
> form, but not always.
>
> 2.       User selects Record, clicks Edit button, Edit Form displays as
> dialog.
>
> a.       Header record is passed by value to the form.
>
> b.      Child details populated via BindingList->BindingSource->DataGrid, no
> problems.
>
> 3.       User clicks Save button, which calls Header.Save.
>
> 4.       Exception is thrown as below.
>
> I use InPlaceConfigurationSource, so I made a small change to
> DefaultDatabaseConfiguration to cater for the additional
> CollectionTypeFactory configuration property. Otherwise this is a .net3.5
> standard build of the source pulled from your Git a few weeks back.
>
> After initialising AR, I made sure everything was still correct.
>
> However, in ActiveRecordBase.InternalSave the call to
> session.SaveOrUpdate(instance) throws a HibernateException.
>
> Any ideas?
>
> Regards
>
> Nick
>
> Nick,
>
> For more information on configuring the ByteCode, please see the wiki:
>
>  <http://docs.castleproject.org/Active%20Record.The-ByteCode.ashx>http://docs.castleproject.org/Active%20Record.The-ByteCode.ashx
>
> In addition to setting the ProxyFactory, as described in the wiki, you will
> also need to set the CollectionTypeFactory.  In your configuration file, add
> the following line:
>
> <add key="collectiontype.factory_class"
>
> value="Castle.ActiveRecord.ByteCode.CollectionTypeFactory,
>
> Castle.ActiveRecord"/>
>
> An example config section would look something like this:
>
> <config>
>
>     <add key="connection.driver_class"
>
> value="NHibernate.Driver.SqlClientDriver"/>
>
>    <add key="dialect" value="NHibernate.Dialect.MsSql2000Dialect"/>
>
>     <add key="connection.provider"
>
> value="NHibernate.Connection.DriverConnectionProvider"/>
>
>     <add key="connection.connection_string" value="Server=(local)
> \sqlexpress;initial catalog=test;Integrated Security=SSPI" />
>
>     <add key="proxyfactory.factory_class"
>
> value="Castle.ActiveRecord.ByteCode.ProxyFactoryFactory,
>
> Castle.ActiveRecord"/>
>
>     <add key="collectiontype.factory_class"
>
> value="Castle.ActiveRecord.ByteCode.CollectionTypeFactory,
>
> Castle.ActiveRecord"/>
>
>     <add key="query.factory_class"
>
> value="NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory, NHibernate"/
>
>
>
> </config>
>
>  image001.png
> 31KViewDownload
>
>  image002.png
> 3KViewDownload

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