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