Generic classes, with generic aggregation, to one table
http://fabiomaulo.blogspot.com/2008/10/power-of-orm.html


2009/10/2 reflection <[email protected]>

>
> Maybe this is another possibility, though it may not be the most
> performant solution:
>
>
> http://colinjack.blogspot.com/2008/03/nhibernate-working-around-lack-of.html
>
> On 2 Okt., 14:18, reflection <[email protected]> wrote:
> > Now you got what I mean ;) I actually see the fact that you should
> > normally only work with the Domain Modell. Though the relational model
> > suffers.
> >
> > My First thought was components, too. But they don't support
> > Inheritance. They should really introduce something like that :) I
> > would have to do some tricks to do that.
> > I think it is better to have a clear Domain Modell a bit messy
> > relational modell, then having a lot of DB stuff in the domain modell
> > which actually has no use for the Domain Modell...
> >
> > Well you could actually move some stuff to the DAL but I think this
> > will get very complex.
> >
> > I think I'm going to map them all to the same table. I hope I don't
> > get any problems, because the relationship can only be unidirectional.
> >
> > On 2 Okt., 13:50, Oskar Berggren <[email protected]> wrote:
> >
> >
> >
> > > I see what you mean. Personally I probably wouldn't mind since it's
> > > the object model I see and work with.
> >
> > > Another alternative might be to not use a separate table for Data, but
> > > instead treating DataClass as acomponent, mapping it to separate
> > > fields in t_Needsdata1 and t_Needsdata2. You would have to look this
> > > up in the reference, I'm unsure of the details and how it works when
> > > you have subclasses to DataClass. This option is useful if one
> > > instance of Needsdata have exactly one instance of DataClass, and the
> > > instances of the latter class aren't shared between different
> > > instances of Needsdata.
> >
> > > /Oskar
> >
> > > 2009/10/2 reflection <[email protected]>:
> >
> > > > Well I understand what you mean. I wanted to separate the Data from
> > > > NeedsData1 and NeedsData2 because they have a different context.
> > > > Programmatically they are exactly the same thing, but logically they
> > > > are not.
> > > > I didn't want to mix the template Data with the real Data in the
> > > > Database. But maybe I'm just a bit too strict separating concerns ;)
> >
> > > > On 2 Okt., 13:20, Oskar Berggren <[email protected]> wrote:
> > > >> I think that you seem to get way to many classes for this now, with
> > > >> the wrapper stuff. Seems strange. :)
> >
> > > >> In my previous mail I didn't actually say one or two tables. You
> could
> > > >> have tables t_Needsdata1 with foreign key to t_Data, and
> t_Needsdata2,
> > > >> also with fk to t_Data.
> >
> > > >> When you do the clone you mention, and the new instance of Data is
> > > >> saved, it will create a new row in the t_Data table. Some rows in
> > > >> t_Data are pointed to by t_Needsdata1, others by t_Needsdata2. And
> > > >> your object model remains clean from the "wrappers".
> >
> > > >> /Oskar
> >
> > > >> 2009/10/2 reflection <[email protected]>:
> >
> > > >> > Maybe it gets clearer if NeedsData2 is something like this:
> >
> > > >> > class NeedsData2
> > > >> > {
> > > >> >  public NeedsData1 { get; set; }
> > > >> >  public NeedsData2DataWrapper { get; set; }
> > > >> > }
> >
> > > >> > NeedsData1 is the template to be used for NeedsData2. So I set
> >
> > > >> > NeedsData2DataWrapper.Data =
> NeedsData.NeedsData1DataWrapper.Data.Clone
> > > >> > (); //Clones the Data without the Id
> >
> > > >> > NeedsData2 now has the original template value
> >
> > > >> > NeedsData2.NeedsData1.NeedsData1DataWrapper.Data
> >
> > > >> > and the values the class itself can change
> >
> > > >> > NeedsData2.NeedsData2DataWrapper.Data
> >
> > > >> > I hope you get the point :)
> >
> > > >> > Greetings
> > > >> > Reflection
> >
> > > >> > On 2 Okt., 12:53, reflection <[email protected]>
> wrote:
> > > >> >> Well I could have, but i would prefer to have the values for
> > > >> >> NeedsData1 in another table then NeedsData2. The background is
> that
> > > >> >> e.g. in NeedsData1 the DataClass is sort of a template and in
> > > >> >> NeedsData2 it is sort of instance of this template - actually I
> copy
> > > >> >> the values from the template to the instantiated version.
> > > >> >> I would like to separate the templates from the instantiated
> values...
> > > >> >> I think the Database Design would be clearer if I wouldn't mix
> those
> > > >> >> types.
> >
> > > >> >> On 2 Okt., 12:14, Oskar Berggren <[email protected]>
> wrote:
> >
> > > >> >> > Why can't you just let the table for NeedsData1/2 have a
> foreign key
> > > >> >> > referencing the Data table?
> >
> > > >> >> > /Oskar
> >
> > > >> >> > 2009/10/2 reflection <[email protected]>:
> >
> > > >> >> > > Hello,
> >
> > > >> >> > > How would you map the following Scencario?
> >
> > > >> >> > > abstract class DataClass
> > > >> >> > > {
> > > >> >> > >  public Int64 DataId { get; set; }
> > > >> >> > > }
> >
> > > >> >> > > class DataInt: DataClass
> > > >> >> > > {
> > > >> >> > >  public Int64 IntData { get; set; }
> > > >> >> > > }
> >
> > > >> >> > > class DataString: DataClass
> > > >> >> > > {
> > > >> >> > >  public String StringData { get; set; }
> > > >> >> > > }
> >
> > > >> >> > > class NeedsData1
> > > >> >> > > {
> > > >> >> > >  public DataClass Data { get; set; }
> > > >> >> > > }
> >
> > > >> >> > > class NeedsData2
> > > >> >> > > {
> > > >> >> > >  public DataClass Data { get; set; }
> > > >> >> > > }
> >
> > > >> >> > > My Problem is that I don't know how to map such a scenarion.
> As you
> > > >> >> > > may have noticed there is no relationship from the child
> class
> > > >> >> > > (DataClass) to the parent class (NeedsData1/NeedsData2).
> >
> > > >> >> > > I could do something like this:
> >
> > > >> >> > > class NeedsData1DataWrapper
> > > >> >> > > {
> > > >> >> > >  public NeedsData1 Parent { get; set; }
> > > >> >> > >  public DataClass Data { get; set; }
> > > >> >> > > }
> >
> > > >> >> > > class NeedsData1
> > > >> >> > > {
> > > >> >> > >  public NeedsData1DataWrapper { get; set; }
> > > >> >> > > }
> >
> > > >> >> > > class NeedsData2DataWrapper
> > > >> >> > > {
> > > >> >> > >  public NeedsData2 Parent { get; set; }
> > > >> >> > >  public DataClass Data { get; set; }
> > > >> >> > > }
> >
> > > >> >> > > class NeedsData2
> > > >> >> > > {
> > > >> >> > >  public NeedsData2DataWrapper { get; set; }
> > > >> >> > > }
> >
> > > >> >> > > That would be an option, but DataClass will be mapped to one
> table. Is
> > > >> >> > > there a possibility to map it to two tables without copying
> the whole
> > > >> >> > > inheritance structure. My head's on fire as I'm thinking
> about this
> > > >> >> > > for a few days now and I can't get a nice solution.
> >
> > > >> >> > > Any help appreciated =) Thanks in advance!!!!
> >
> > > >> >> > > Greetings
> > > >> >> > > Reflection- Zitierten Text ausblenden -
> >
> > > >> >> > - Zitierten Text anzeigen -- Zitierten Text ausblenden -
> >
> > > >> >> - Zitierten Text anzeigen -- Zitierten Text ausblenden -
> >
> > > >> - Zitierten Text anzeigen -- Zitierten Text ausblenden -
> >
> > > - Zitierten Text anzeigen -- Zitierten Text ausblenden -
> >
> > - Zitierten Text anzeigen -
> >
>


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