What you have to do is set default-cascade="save-update, persist" at the top
of each mapping.
I don't like it at all but you know what you need.

On Thu, Sep 30, 2010 at 6:26 AM, alexey_baranov <[email protected]> wrote:

> I'm not sure understand what you ask, But I'l try
>
> We have a code where Obj inherited classes (Request, Person, Client,
> Network....) returns like base Obj type (Everything is Obj in out
> solution/ Like in AD, LDAP or other catalog)
>
> And we have many many views for each entity type. Like
> NetworkEquipmentView, ClientView, FolderView, PersonView, ....
>
> class ObjView: UserControl{
> Obj Model(){
>   set <...}
>   get {
>    ...
>       return _model;
>   }
> }
> }
>
> Now imagine user click "Save" button. We get Obj refference to View's
> model (but we do not know what type exactly) and need to save it.
>
> var model= SomeView.Model;  //hire we have any Obj for example Person.
> Sometimes it refference to new Entity. Mayby it refference to
> transient Parent, mayby it refference to transient Attachment, mayby
> model is not a Peston but File at all
> session.Save(model);   //and hire we want to save all unsaved
> refferenced entities before saving model. But have Exception "unable
> to save entity, save unsaved referenced entity first"
>
> what we have to do hire is to check model type and then chek is
> refference properties transient or not like this
>
> if (model is Folder){
>   if (model have unsaved attachments){
>       save unsaved attachments
>   }
> }
> else if (model is Request){
>    if (model have unsaved initier){
>        save initier
>    }
>    if (model have unsaved doers){
>        save unsaved doers
>    }
>    if (model have unsave .....)
> }
> else if (....
>  .....
> }
> esle if
> else if
>  .....
>  ....
> }
>
> We have many other places where we got returned polimorphoc entity
> like base class Obj
> Hope you understand me
>
> Thanks!
>
> <?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
> assembly="Helpdesk" namespace="Helpdesk">
>  <class name="Obj" discriminator-value="9">
>    <id name="Id">
>      <generator class="native" />
>    </id>
>    <discriminator column="Typee"  type="Int32"/>
>    <timestamp name="Modifed"/>
>    <property name="Path" access="nosetter.camelcase-underscore" not-
> null="true"/>
>    <property name="Name" column="Namee" not-null="true"/>
>    <property name ="IsFolder" access="nosetter.camelcase-underscore"/
> >
>    <property name="Note"/>
>    <property name="Created" not-null="true"/>
>    <many-to-one name="Owner" column ="Ownerr" />
>    <many-to-one name ="Parent" access="nosetter.camelcase-underscore"/
> >
>    <set name="Children" inverse="true">
>      <key column="Parent"/>
>      <one-to-many class="Obj"/>
>    </set>
>    <set name="Attachments" table="Obj_Attachments" cascade="save-
> update">
>      <key column="Obj"/>
>      <many-to-many column="Attachment" class="Filee"/>
>    </set>
>  </class>
> </hibernate-mapping>
>
> <?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
> assembly="Helpdesk" namespace="Helpdesk">
>  <subclass name="Folder" extends ="Obj" discriminator-value="42">
>    <!--<join table="Folder">
>      <key column="Id"/>
>    </join>-->
>  </subclass>
> </hibernate-mapping>
>
> <?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
> assembly="Helpdesk" namespace="Helpdesk">
>  <subclass name="Request" extends ="Obj" discriminator-value="41">
>    <!--<join table="Request">
>      <key column="Id"/>-->
>      <property name="Text" column="Textt"/>
>      <property name="Deadline"/>
>      <property name="Closed"/>
>      <property name="CallbackOn"/>
>      <many-to-one name ="Initier" fetch="join"/>
>      <list name="Doers" table="Request_Doers">
>        <key column="Request"/>
>        <index column="i"/>
>        <many-to-many column="Doer" class="Department"/>
>      </list>
>    <!--</join>-->
>  </subclass>
> </hibernate-mapping>
>
> <?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
> assembly="Helpdesk" namespace="Helpdesk">
>  <subclass name="Note" extends ="Obj" discriminator-value="63">
>    <!--<join table="Note">
>      <key column="Id"/>-->
>      <property name="Text" column="Textt"/>
>    <!--</join>-->
>  </subclass>
> </hibernate-mapping>
>
> ....
> ...
> ...
> ...
>
>
> On Sep 29, 4:15 pm, Fabio Maulo <[email protected]> wrote:
> > A little graph with your mapping.
> >
> >
> >
> > On Wed, Sep 29, 2010 at 5:20 AM, alexey_baranov <[email protected]>
> wrote:
> > > I'm not shure understand you. What is this "save-update, persist" ? Is
> > > it existed feature or just the abbreviation for our wish? I have never
> > > see "persist". We do not need cascade "save-update, persist", just
> > > "persist".
> >
> > > I can share any mapping information you need. This is not a big
> > > seecret. What does exactly you ask? Mapping files? code listing or
> > > litle example?
> >
> > > Thanks!
> >
> > > On Sep 29, 3:30 am, Fabio Maulo <[email protected]> wrote:
> > > > I would say that what you are looking for is
> > > default-cascade="save-update,
> > > > persist" but I would be sure.
> >
> > > > If the question will not sound "rude" (today was again another of
> those
> > > day,
> > > > in public and privately),
> >
> > > > can you show us an example ?
> >
> > > > A little graph with your mapping.
> >
> > > > On Tue, Sep 28, 2010 at 1:11 PM, alexey_baranov <[email protected]>
> > > wrote:
> > > > > Hi!
> >
> > > > > We have to implement new method SaveGraph(), wich will be like
> > > > > original ISession.Save() except automatic saving refferenced
> transient
> > > > > entities insted throwin exception.We need this feature in many
> cases
> > > > > when working with polimorphic entities and do not know exactly what
> > > > > type is used. We ask more experienced users and developers voice is
> it
> > > > > feasible work.
> >
> > > > > Thanks.
> >
> > > > > --
> > > > > 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%[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]<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
>
> --
> 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