views:

93

answers:

1

Please believe me when I say I understand this isn't the "right" way to do this. File this under large-complex-legacy-system questions.

We have tables describing OCR'd data of documents. Each document type has its own table. Each table is generated based on the types of fields it expects. So have a schema which looks a bit like this:

Table: DocumentTypes
   Field: Id
   Field: Prefix

Table: DocumentFields
   Field: Id
   Field: DocId
   Field: Name

And we would generate tables like:

Table: Type1_Data_Unit1000
   Field: Id
   Field: DocId
   Field: DocField_A_Data
   Field: DocField_A_Info1
   Field: DocField_A_Info2
   Field: DocField_Z_Data
   Field: DocField_Z_Info1
   Field: DocField_Z_Info2

NHibernate works well for all of our other data because the schema is more static.

My question: Is it at all possible to configure nhibernate to load one of the DataTables and bind the series of fields into a collection? If it is, at what interfaces should I start looking?

My idea is to have a class which is something like:

class FormData
{
   public virtual int Id {get;set;}
   public virtual int DocId {get;set;}
   public virtual int Id {get;set;}
   public virtual IList(Of FormFieldData) {get;private set;}
}

class FormFieldData
{
   public virtual int Id {get;set;}
   public virtual string Value {get;set;}
   public virtual int Info1 {get;set;}
   public virtual int Info2 {get;set;}
}

I've looked at "IInterceptor" a little bit and think that's where I should look first. But before investing days in it, I wanted to run it by the SO crowd.

Thanks!

+1  A: 

If the schema isn't static, then it'll be hard for nhibernate to even create the query - and intercepters can't help you there as far as I'm concerned. I'd go with pure CreateSQLQuery and manipulating the returned values manually afterwards.

asgerhallas
Perfect, I can use that to bind the properties that ARE static then populate my collection the dynamic columns.
hometoast
And here I was on track for the tumbleweed badge! :)
hometoast
Oh... I'm so sorry you didn't get it ;)
asgerhallas