Thanks

2010/3/12 DanPlaskon <[email protected]>

> Fabio,
>
> I believe the example I posted was meant for database deployments
> where database-level cascade deletes aren't an option - I was already
> aware of the "on-cascade='delete'" option for the inverse side of sets
> when it is.
>
> I've opened an initial ticket in JIRA - I'll see what I can do about
> putting together some example code in the next few days (currently
> swamped here at work).
>
> Cheers,
>
> -Dan
>
> On Mar 12, 11:39 am, Fabio Maulo <[email protected]> wrote:
> > well... what can I say ?....
> > If you are a ConfORM user you will see which is the mapping pattern for a
> > bidirectional-one-to-many with *one-shot-delete* :
> > public class Item
> > {
> > private ISet<Bid> _bids;
> > public long Id { get; private set; }
> > public ISet<Bid> Bids
> > {
> > get { return _bids; }
> >
> > }
> > }
> >
> > public class Bid
> > {
> > public long Id { get; private set; }
> > public Item Item { get; set; }
> > public Double Amount { get; private set; }
> > public string Code { get; private set; }
> >
> > }
> >
> > The whole mapping in ConfORM is :
> > public void MapDomain(ObjectRelationalMapper orm)
> > {
> > orm.TablePerClass(new[] { typeof(Item), typeof(Bid) });
> > orm.Patterns.PoidStrategies.Add(new NativePoidPattern());
> >
> > }
> >
> > *Yes! only two lines!*
> >
> > And the result XML is (for those about to rock) :
> >   <class name="Item">
> >     <id name="Id" type="Int64">
> >       <generator class="native" />
> >     </id>
> >     <set name="Bids" access="nosetter.camelcase-underscore"
> inverse="true"
> > cascade="all,delete-orphan">
> >       <key column="Item" on-delete="cascade" />
> >       <one-to-many class="Bid" />
> >     </set>
> >   </class>
> >   <class name="Bid">
> >     <id name="Id" type="Int64">
> >       <generator class="native" />
> >     </id>
> >     <many-to-one name="Item" />
> >     <property name="Amount" />
> >     <property name="Code" />
> >   </class>
> >
> > As you can see ConfORM knows how map the *one-shot-delete* :
> >     <set name="Bids" access="nosetter.camelcase-underscore"
> inverse="true"
> > cascade="all,delete-orphan">
> >       <key column="Item" on-delete="cascade" />
> >       <one-to-many class="Bid" />
> >     </set>
> >
> > btw... backing to our concern if you have time to create a test to pass
> and
> > a JIRA ticket we can study a solution.
> >
> > 2010/3/12 DanPlaskon <[email protected]>
> >
> >
> >
> >
> >
> > > Fabio,
> >
> > > Alright - I see what you're getting at...something like this:
> >
> > >http://elegantcode.com/2009/07/19/nhibernate-2-1-and-collection-event.
> ..
> > > (but obviously handing validation events)
> >
> > > Also...wouldn't we be interested in
> >
> > > IPreCollectionUpdateEventListener
> > > IPreCollectionRemoveEventListener
> >
> > > Instead of the "Post" ones?
> >
> > > I imagine these would need to examine only "Size" and "NotNull"
> > > validation attributes on collections, to ensure that the contraints
> > > specified were satisfied.
> >
> > > Is this along the lines of what you were thinking?
> >
> > > On Mar 12, 10:55 am, Fabio Maulo <[email protected]> wrote:
> > > > More than a workaroud we should think about a solution
> > > > IPostCollectionUpdateEventListener
> > > > IPostCollectionRemoveEventListener
> >
> > > > Can you study it a little bit and send me a proposal ?
> >
> > > > If you have time obviously.
> >
> > > > btw a JIRA ticket is welcomehttp://216.121.112.228/browse/NHV
> >
> > > > 2010/3/12 DanPlaskon <[email protected]>
> >
> > > > > Hello,
> >
> > > > > I have a "Size" validation constraint specified for a collection on
> an
> > > > > entity of mine (Min is set to 1, to specify that the entity must
> have
> > > > > at least one child entity in its collection).
> >
> > > > > This works as expected for the initial creation, however validation
> > > > > does not occur upon update of the entity if the only change made to
> it
> > > > > is to remove all child entities from the collection. I imagine this
> > > > > occurs because the entity itself is not considered dirty (since the
> > > > > only changes made were to its collection of child entities), and
> thus
> > > > > the ValidatePreUpdateEventListener does not evaluate it at all.
> > > > > However, this poses a problem, because the entity has technically
> > > > > entered an invalid state (its collection does not contain any child
> > > > > entities) and NHibernate is all to happy to remove all child
> entities
> > > > > without checking the validity of the parent.
> >
> > > > > So...that being said...what's the workaround for this? If further
> > > > > details are required, please don't hesitate to ask :)
> >
> > > > > --
> > > > > 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]<nhusers%[email protected]>
> <nhusers%[email protected]<nhusers%[email protected]>
> ­>
> > > <nhusers%[email protected]<nhusers%[email protected]>
> <nhusers%252bunsubscr...@googlegroup­s.com>
> > > ­>
> > > > > .
> > > > > For more options, visit this group at
> > > > >http://groups.google.com/group/nhusers?hl=en.
> >
> > > > --
> > > > Fabio Maulo- Hide quoted text -
> >
> > > > - Show quoted text -
> >
> > > --
> > > 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]<nhusers%[email protected]>
> <nhusers%[email protected]<nhusers%[email protected]>
> ­>
> > > .
> > > For more options, visit this group at
> > >http://groups.google.com/group/nhusers?hl=en.
> >
> > --
> > Fabio Maulo- Hide quoted text -
> >
> > - Show quoted text -
>
> --
> 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]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
>


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