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.
