I obviously didn't mean IUserType, just IUserCollectionType for
collection.  If there was an IUserType for entities as a whole, that
would be perfect.

Corey

On Jan 26, 1:34 pm, Corey Coogan <[email protected]> wrote:
> I forgot to mention that I'm looking at using IUserType and
> IUserCOllectionType to make this work, but would still appreciate
> anyone's advice.
>
> cc
>
> On Jan 26, 12:35 pm, Corey Coogan <[email protected]> wrote:
>
> > I'm working with a legacy system.  This system has 4 base tables in
> > Oracle and then will lay Views on top of these tables for specific use
> > cases.  Some of these base tables have over 100 views sitting on top
> > of them.  Each record in these base tables has an identifier (001,
> > 002) that indicates which view the data belongs to.  The mapping
> > between View and base table identifier is in another table.
>
> > I'm trying to take this object model, which is currently working with
> > a hand rolled, generated DAL and move to NHibernate.  I'll describe
> > how the system works today and see if anyone has advice for how to
> > make this work in NH.
>
> > - The aggregate root (AR) is Policy.
> > - When a Policy is retrieved, a select is done for each of the base
> > tables using the FK from Policy, which returns a reader.
> > - There can be 1..* of the same view
> > - The reader for each basetable record (table = base_data_1) gets
> > looped.  Each record gets mapped to a class that matches the base
> > table (class = BaseData1).
> > - The mapper reads the identifier and creates a class that represents
> > the View (e.g. ExpenseReportsView).
> > - The view decorates the basetable class and is created by accepting
> > the basetable class in the constructor (e.g. ExpenseReportsView
> > (BaseData1 data) ).
> > - Each view for a particular basetable implements a base view class
> > (ExpenseReportsView : BaseData1View).
> > - The base view has a public getter to access the basetable.
> > - After the view is created, it is added to a custom generic list
> > typed to the base view (BaseData1ViewList : List<BaseData1View>).
> > - The AR has a getter to get at the custom collection.  The custom
> > collection has helper methods on it, most importantly to retrieve a
> > specific type of view from the custom collection.  This is important
> > because someone may know that they need all instances of the
> > ExpenseReportsView from the list.  Since there could be 100's of
> > records in there, we don't a typed list for each one of these. (e.g.
> > var expenseReports =
> > policy.BaseData1ViewList.GetViewsOfType<ExpenseReports>() ).
>
> > I know this seems complicated and you may be thinking this design is
> > too data centric, but this is the requirement and it works for this
> > client.
>
> > So far, I planned on mapping each View class to the underlying base
> > table.  That way, someone can simply save the view and be NH will map
> > it directly to the table.  I realize that views can sometime be
> > updatable, but didn't want to take any chances.
>
> > My question is this.  How can I implement the decorator portion of
> > this using NH?  How can I tell NH to get all BaseTable1 records and
> > then use my code to create my base views?
>
> > Also, how can I use the custom collection of base views to update NH?
>
> > Thanks,
> > cc
>
> > - There is some singlton classes that read the DB to determine which
> > base table identity maps to which View class.
>
>

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