As far as i understood all this, i have to use native, if i want to provide
my own ID generation. And i need this because the DB uses a TBL_IDEN for
ID's.
And in case of the PInfo Class there is no TBL_IDEN entry because the ID
results from the StrIdent. So, since all the NH ID generators will not work,
i have to use my own.
Am schrieb John Davidson <[email protected]>:
Why do you need that override if you want to use native. If you are using
native, then there should be no override that sets the id value anywhere
in your code.
John Davidson
On Sat, Feb 26, 2011 at 12:27 PM, [email protected]> wrote:
I don't really want to manage the ID value in code. That's why i use the
IdentifierGenerator with the
overridden Generate method. So the ID is assigned from NH. I never touch
the ID in my code.
Am schrieb John Davidson [email protected]>:
> If you are managing the Id value in your code you should use a
generator of "assigned" rather than "native".
>
> John Davidson
>
> On Sat, Feb 26, 2011 at 10:56 AM, [email protected]> wrote:
>
> It would be very nice, if someone could take a quick look at the
described problem. Maybe i do something totally wrong, but i'm
>
> runing a little out of time and don't know what to do. Thanks
>
>
> Am schrieb [email protected]:
>
>
> > I have to correct the code form the last post it:
> >
> > public override object Generate(ISessionImplementor session, object
obj)
> > {
> > if( obj is Domain.Base.PInfo )
>
> > {
> > int nID = 0;
> > if( int.TryParse((obj as Domain.Base.PInfo).StrIdent,out nID) )
> > {
> > return nID;
> > }
> > return null;
>
> > }
> > return base.Generate(session,obj);
> > }
> >
> > So i thought i give back the ID for the new entity. Not right?
> > Ther inheritance from TableGenerator is because the DB has a TBL_IDEN
Table, so i do this in
>
> > the Configure method:
> >
>
> > public override void Configure(IType type, IDictionary parms, Dialect
dialect)
> > {
> > string strTable = parms["target_table"];
>
> > string strColumn = parms["target_column"];
> >
> > parms["table"] = "TBL_IDEN";
> > parms["column"] = "IDEN_CNT";
>
> > parms["where"] = "((IDEN_TABLE = '" + strTable + "') AND (IDEN_COL
= '" + strColumn + "'))";
> > base.Configure(type, parms, dialect);
>
> > }
> >
> > As for the mapping, the ID is mapped as "native" and StrIdent is a
simple string property:
> >
> >
> >
> >
> >
> >
>
>
>
> > ...
> >
> > So, i hope this is enough information and anyone has a hint for me.
> >
> > Thanks
> >
> > Am schrieb [email protected]:
>
> > > I know and i don't do that :-)
> > > What I do is, i use an own IdentifierGenerator inherited from
TableGenerator. There i have to check the following:
> > >
> > > public override object Generate(ISessionImplementor session, object
obj)
>
> > > {
> > > if( obj is Thp5.Domain.Base.Patient.PatientInfo )
> > > {
> > > int nID = 0;
> > > if( int.TryParse((obj as Domain.Base.PInfo).StrIdent,out nID) )
>
> > > {
> > > return nID;
> > > }
> > > return null;
> > > }
> > > return base.Generate(session,obj);
> > >
> > > This is because the ID is calculated from the string ID (don't ask
about it..it has to be this way)
>
> > >
> > > Is this the wrong way?
> > >
> > > Am schrieb "José F. Romaniello" [email protected]>:
> > > > you should not modify the POIDs of your entities instances
>
> > > >
> > > > 2011/2/25 [email protected]>
> > > >
> > > > Hi all,
>
> > > >
> > > > i get the following exception and don't know exactly what i
should do about it:
> > > >
> > > > "identifier of an instance of Domain.Base.PInfo was altered from
102472 to 102472"
>
> > > >
> > > >
> > > > Any hint?
> > > >
> > > > 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].
> > > >
> > > >
>
> > > > For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en.
> > > >
> > > >
> > > >
>
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > --
> > > >
> > > > 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.
> > > >
>
>
>
>
> --
>
> 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.
>
>
>
>
>
>
>
>
>
>
>
>
>
> --
>
> 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.
>
--
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.
--
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.
--
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.